System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 24297380f48cb8d68a098922792c506e3f752989:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a  obalization;....
0160: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0170: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0180: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0190: 74 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72  time.CompilerSer
01a0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01b0: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52  ..using System.R
01c0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01d0: 72 76 69 63 65 73 3b 0d 0a 75 73 69 6e 67 20 53  rvices;..using S
01e0: 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e  ystem.Text;....n
01f0: 61 6d 65 73 70 61 63 65 20 53 79 73 74 65 6d 2e  amespace System.
0200: 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a  Data.SQLite..{..
0210: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
0220: 74 65 43 6f 6e 74 65 78 74 20 48 65 6c 70 65 72  teContext Helper
0230: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
0240: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0250: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
0260: 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6e 74 65  presents a conte
0270: 78 74 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  xt from the SQLi
0280: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
0290: 74 68 61 74 20 63 61 6e 0d 0a 20 20 20 20 2f 2f  that can..    //
02a0: 2f 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 74  / be passed to t
02b0: 68 65 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  he sqlite3_resul
02c0: 74 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69  t_*() and associ
02d0: 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d  ated functions..
02e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
02f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
0310: 69 74 65 43 6f 6e 74 65 78 74 20 3a 20 49 53 51  iteContext : ISQ
0320: 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65  LiteNativeHandle
0330: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
0340: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0350: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   Data..        /
0360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0370: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
0380: 74 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e  tive context han
0390: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
03a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
03b0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e        private In
03c0: 74 50 74 72 20 70 43 6f 6e 74 65 78 74 3b 0d 0a  tPtr pContext;..
03d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
03e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
03f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0430: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0440: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
0450: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
0460: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
0470: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
0480: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
04c0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
04d0: 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e 0d 0a  ontext handle...
04e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
04f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0500: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0510: 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20  "pContext">..   
0520: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
0530: 69 76 65 20 63 6f 6e 74 65 78 74 20 68 61 6e 64  ive context hand
0540: 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  le to use...    
0550: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
0560: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
0570: 61 6c 20 53 51 4c 69 74 65 43 6f 6e 74 65 78 74  al SQLiteContext
0580: 28 49 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74  (IntPtr pContext
0590: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
05a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
05b0: 43 6f 6e 74 65 78 74 20 3d 20 70 43 6f 6e 74 65  Context = pConte
05c0: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  xt;..        }..
05d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
05e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0630: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0640: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
0650: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
0660: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
0670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0680: 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
0690: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
06a0: 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20 68 61  SQLite native ha
06b0: 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
06c0: 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20 20 20  with this..     
06d0: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
06e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
06f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0700: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0710: 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
0720: 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
0730: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
0740: 7b 20 72 65 74 75 72 6e 20 70 43 6f 6e 74 65 78  { return pContex
0750: 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t; }..        }.
0760: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
0770: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
0780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
07d0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
07e0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
07f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0800: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0810: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0820: 73 75 6c 74 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20  sult to NULL... 
0830: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0840: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
0850: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 4e 75  ublic void SetNu
0860: 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ll()..        {.
0870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
0880: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
0890: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
08a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
08b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
08c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
08d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
08e0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
08f0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
0900: 75 6c 74 5f 6e 75 6c 6c 28 70 43 6f 6e 74 65 78  ult_null(pContex
0910: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
0920: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
09a0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
09b0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
09c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
09d0: 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
09e0: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
09f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0a00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
0a10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0a20: 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
0a30: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
0a40: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
0a50: 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20  e to use...     
0a60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
0a70: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0a80: 76 6f 69 64 20 53 65 74 44 6f 75 62 6c 65 28 64  void SetDouble(d
0a90: 6f 75 62 6c 65 20 76 61 6c 75 65 29 0d 0a 20 20  ouble value)..  
0aa0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ab0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
0ac0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
0ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
0ae0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
0af0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
0b00: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
0b10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
0b20: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
0b30: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
0b40: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
0b50: 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75 62  ite3_result_doub
0b60: 6c 65 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c  le(pContext, val
0b70: 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c  ue);..#elif !SQL
0b80: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
0b90: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
0ba0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
0bb0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 64 6f 75  lite3_result_dou
0bc0: 62 6c 65 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e  ble_interop(pCon
0bd0: 74 65 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29  text, ref value)
0be0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
0bf0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0c00: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
0c10: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
0c20: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
0c30: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
0c90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0ca0: 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20     /// Sets the 
0cb0: 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74  context result t
0cc0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0cd0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
0ce0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
0cf0: 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  / value...      
0d00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0d10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
0d20: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
0d30: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
0d40: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
0d50: 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
0d60: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0d70: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
0d90: 64 20 53 65 74 49 6e 74 28 69 6e 74 20 76 61 6c  d SetInt(int val
0da0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dc0: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
0dd0: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
0de0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
0df0: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
0e00: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
0e10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0e20: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
0e30: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
0e40: 6c 74 5f 69 6e 74 28 70 43 6f 6e 74 65 78 74 2c  lt_int(pContext,
0e50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0e60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0eb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
0ec0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0ed0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74  .        /// Set
0ee0: 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65  s the context re
0ef0: 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63  sult to the spec
0f00: 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
0f10: 22 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20  "Int64" />..    
0f20: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a      /// value...
0f30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0f50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0f60: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
0f70: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0f80: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
0f90: 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
0fa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
0fb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
0fc0: 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74 36 34  ic void SetInt64
0fd0: 28 6c 6f 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20  (long value)..  
0fe0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
0ff0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
1000: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
1010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1020: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
1030: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1040: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66  eption();....#if
1050: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1060: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1070: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
1080: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
1090: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
10a0: 34 28 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75  4(pContext, valu
10b0: 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49  e);..#elif !SQLI
10c0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
10d0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
10e0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
10f0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 36  ite3_result_int6
1100: 34 5f 69 6e 74 65 72 6f 70 28 70 43 6f 6e 74 65  4_interop(pConte
1110: 78 74 2c 20 72 65 66 20 76 61 6c 75 65 29 3b 0d  xt, ref value);.
1120: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
1130: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
1140: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1150: 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69 66  ption();..#endif
1160: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
11d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
11e0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
11f0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1200: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1210: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1220: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
1230: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1240: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1260: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
1270: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1280: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
1290: 72 69 6e 67 22 20 2f 3e 20 76 61 6c 75 65 20 74  ring" /> value t
12a0: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 76 61 6c  o use.  This val
12b0: 75 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ue will be..    
12c0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65      /// converte
12d0: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
12e0: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
12f0: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
1300: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1310: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
1320: 69 63 20 76 6f 69 64 20 53 65 74 53 74 72 69 6e  ic void SetStrin
1330: 67 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d  g(string value).
1340: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1350: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1360: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1370: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
13a0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
13c0: 5b 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74  [] bytes = SQLit
13d0: 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42  eString.GetUtf8B
13e0: 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76  ytesFromString(v
13f0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
1400: 20 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20        if (bytes 
1410: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1420: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1430: 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c  new ArgumentNull
1440: 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65  Exception("value
1450: 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
1460: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
1470: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
1480: 65 73 75 6c 74 5f 74 65 78 74 28 0d 0a 20 20 20  esult_text(..   
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
14a0: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
14b0: 74 65 73 2e 4c 65 6e 67 74 68 2c 20 28 49 6e 74  tes.Length, (Int
14c0: 50 74 72 29 28 2d 31 29 29 3b 0d 0a 20 20 20 20  Ptr)(-1));..    
14d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1530: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1540: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
1550: 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20  ets the context 
1560: 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70  result to the sp
1570: 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65  ecified <see cre
1580: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 0d 0a 20  f="String" />.. 
1590: 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65         /// value
15a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 65   containing an e
15b0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
15c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
15d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
15f0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
1600: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1610: 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 76  ef="String" /> v
1620: 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  alue containing 
1630: 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
1640: 65 20 74 65 78 74 2e 0d 0a 20 20 20 20 20 20 20  e text...       
1650: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
1660: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
1670: 64 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  d to the UTF-8 e
1680: 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74 6f  ncoding prior to
1690: 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20 20   being..        
16a0: 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  /// used...     
16b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16c0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
16d0: 76 6f 69 64 20 53 65 74 45 72 72 6f 72 28 73 74  void SetError(st
16e0: 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ring value)..   
16f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1700: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
1710: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1730: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1740: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1750: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1760: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
1770: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 53 74 72  ytes = SQLiteStr
1780: 69 6e 67 2e 47 65 74 55 74 66 38 42 79 74 65 73  ing.GetUtf8Bytes
1790: 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65  FromString(value
17a0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
17b0: 20 20 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e    if (bytes == n
17c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
17d0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
17e0: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
17f0: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
1800: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1810: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1820: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1830: 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  t_error(..      
1840: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
1850: 78 74 2c 20 62 79 74 65 73 2c 20 62 79 74 65 73  xt, bytes, bytes
1860: 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20  .Length);..     
1870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
18f0: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1900: 65 73 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65  esult to the spe
1910: 63 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66  cified <see cref
1920: 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ="SQLiteErrorCod
1930: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
1940: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
1950: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1960: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1970: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1980: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
1990: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
19a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 22  SQLiteErrorCode"
19b0: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73 65   /> value to use
19c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19e0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74   public void Set
19f0: 45 72 72 6f 72 43 6f 64 65 28 53 51 4c 69 74 65  ErrorCode(SQLite
1a00: 45 72 72 6f 72 43 6f 64 65 20 76 61 6c 75 65 29  ErrorCode value)
1a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1a30: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
1a40: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1a50: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
1a60: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
1a70: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
1a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
1a90: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
1aa0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
1ab0: 65 72 72 6f 72 5f 63 6f 64 65 28 70 43 6f 6e 74  error_code(pCont
1ac0: 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ext, value);..  
1ad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ae0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1b30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1b40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b50: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
1b60: 74 20 72 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74  t result to cont
1b70: 61 69 6e 20 74 68 65 20 65 72 72 6f 72 20 63 6f  ain the error co
1b80: 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47  de SQLITE_TOOBIG
1b90: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ba0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1bb0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
1bc0: 65 74 45 72 72 6f 72 54 6f 6f 42 69 67 28 29 0d  etErrorTooBig().
1bd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1be0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1bf0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
1c00: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1c10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1c20: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
1c30: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
1c50: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1c60: 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65  sqlite3_result_e
1c70: 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70 43 6f 6e  rror_toobig(pCon
1c80: 74 65 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  text);..        
1c90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
1d10: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
1d20: 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  lt to contain th
1d30: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c  e error code SQL
1d40: 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20 20 20 20  ITE_NOMEM...    
1d50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
1d70: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
1d80: 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20  NoMemory()..    
1d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da0: 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74 20     if (pContext 
1db0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
1dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1de0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1df0: 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1e00: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1e10: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1e20: 65 33 5f 72 65 73 75 6c 74 5f 65 72 72 6f 72 5f  e3_result_error_
1e30: 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78 74 29 3b  nomem(pContext);
1e40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1e50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1ea0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1eb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ec0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
1ed0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
1ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
1ef0: 65 65 20 63 72 65 66 3d 22 42 79 74 65 22 20 2f  ee cref="Byte" /
1f00: 3e 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20  > array..       
1f10: 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20   /// value...   
1f20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1f30: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1f40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
1f50: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  lue">..        /
1f60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1f70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
1f80: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
1f90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1fa0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
1fb0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c 6f  blic void SetBlo
1fc0: 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 0d  b(byte[] value).
1fd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1fe0: 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e          if (pCon
1ff0: 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a  text == IntPtr.Z
2000: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2010: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2020: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2030: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a  Exception();....
2040: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2050: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2070: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
2080: 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
2090: 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20  "value");....   
20a0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
20b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
20c0: 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
20d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20e0: 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61 6c     pContext, val
20f0: 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68  ue, value.Length
2100: 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b  , (IntPtr)(-1));
2110: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
2120: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2170: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2180: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2190: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
21a0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
21b0: 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73 20  a BLOB of zeros 
21c0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
21d0: 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
21e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2200: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
2210: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2220: 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72 6f  e number of zero
2230: 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66 6f   bytes to use fo
2240: 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74 65  r the BLOB conte
2250: 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  xt result...    
2260: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2270: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
2280: 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c 6f   void SetZeroBlo
2290: 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  b(int value)..  
22a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22b0: 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78       if (pContex
22c0: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
22d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22e0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
22f0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2300: 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20  eption();....   
2310: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
2320: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2330: 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
2340: 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20 76  blob(pContext, v
2350: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
2360: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23d0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
23e0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
23f0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
2400: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
2410: 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e 0d  QLiteValue" />..
2420: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2440: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2450: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
2460: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2470: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2480: 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a 20  e" /> to use... 
2490: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24a0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
24b0: 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75  lic void SetValu
24c0: 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76 61  e(SQLiteValue va
24d0: 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lue)..        {.
24e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
24f0: 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74  (pContext == Int
2500: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2510: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
2520: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2530: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
2540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2550: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
2560: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2570: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
2580: 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
2590: 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
25a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  ..            Un
25b0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
25c0: 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  s.sqlite3_result
25d0: 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20  _value(..       
25e0: 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65 78           pContex
25f0: 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65 48  t, value.NativeH
2600: 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  andle);..       
2610: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2620: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
2630: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2640: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
26a0: 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c 70  SQLiteValue Help
26b0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
26c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
26e0: 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 61 6c  represents a val
26f0: 75 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  ue from the SQLi
2700: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2710: 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20  that can be..   
2720: 20 2f 2f 2f 20 70 61 73 73 65 64 20 74 6f 20 74   /// passed to t
2730: 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  he sqlite3_value
2740: 5f 2a 28 29 20 61 6e 64 20 61 73 73 6f 63 69 61  _*() and associa
2750: 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a  ted functions...
2760: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2770: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2780: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2790: 74 65 56 61 6c 75 65 20 3a 20 49 53 51 4c 69 74  teValue : ISQLit
27a0: 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20  eNativeHandle.. 
27b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
27c0: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
27d0: 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ta..        /// 
27e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
27f0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2800: 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d  e value handle..
2810: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2820: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2830: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2840: 70 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  pValue;..       
2850: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2860: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28b0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
28c0: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 72  n Private Constr
28d0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
28e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28f0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
2900: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
2910: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20  e of this class 
2920: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
2930: 69 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  ied native..    
2940: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 68 61      /// value ha
2950: 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndle...        /
2960: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2970: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2980: 6d 20 6e 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e  m name="pValue">
2990: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
29a0: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
29b0: 61 6e 64 6c 65 20 74 6f 20 75 73 65 2e 0d 0a 20  andle to use... 
29c0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
29d0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  am>..        pri
29e0: 76 61 74 65 20 53 51 4c 69 74 65 56 61 6c 75 65  vate SQLiteValue
29f0: 28 49 6e 74 50 74 72 20 70 56 61 6c 75 65 29 0d  (IntPtr pValue).
2a00: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2a10: 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 56 61          this.pVa
2a20: 6c 75 65 20 3d 20 70 56 61 6c 75 65 3b 0d 0a 20  lue = pValue;.. 
2a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a40: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2aa0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2ab0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
2ac0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2ad0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2ae0: 20 20 20 2f 2f 2f 20 49 6e 76 61 6c 69 64 61 74     /// Invalidat
2af0: 65 73 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  es the native va
2b00: 6c 75 65 20 68 61 6e 64 6c 65 2c 20 74 68 65 72  lue handle, ther
2b10: 65 62 79 20 70 72 65 76 65 6e 74 69 6e 67 20 66  eby preventing f
2b20: 75 72 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20  urther..        
2b30: 2f 2f 2f 20 61 63 63 65 73 73 20 74 6f 20 69 74  /// access to it
2b40: 20 66 72 6f 6d 20 74 68 69 73 20 6f 62 6a 65 63   from this objec
2b50: 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2b60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b80: 76 61 74 65 20 76 6f 69 64 20 50 72 65 76 65 6e  vate void Preven
2b90: 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29 0d  tNativeAccess().
2ba0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2bb0: 20 20 20 20 20 20 20 20 70 56 61 6c 75 65 20 3d          pValue =
2bc0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2be0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2c50: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
2c60: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
2c70: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
2c80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2c90: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2ca0: 61 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79 20  a logical array 
2cb0: 6f 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  of native pointe
2cc0: 72 73 20 74 6f 20 6e 61 74 69 76 65 20 73 71 6c  rs to native sql
2cd0: 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20 20  ite3_value..    
2ce0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
2cf0: 65 73 20 69 6e 74 6f 20 61 20 6d 61 6e 61 67 65  es into a manage
2d00: 64 20 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20  d array of <see 
2d10: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
2d20: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  e" />..        /
2d30: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
2d40: 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ces...        //
2d50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2d70: 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20   name="argc">.. 
2d80: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2d90: 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74  umber of element
2da0: 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63 61 6c  s in the logical
2db0: 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76 65   array of native
2dc0: 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a   sqlite3_value..
2dd0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2de0: 63 74 75 72 65 73 2e 0d 0a 20 20 20 20 20 20 20  ctures...       
2df0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2e00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e10: 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
2e20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2e30: 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
2e40: 6f 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72  o the logical ar
2e50: 72 61 79 20 6f 66 20 6e 61 74 69 76 65 20 73 71  ray of native sq
2e60: 6c 69 74 65 33 5f 76 61 6c 75 65 0d 0a 20 20 20  lite3_value..   
2e70: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
2e80: 72 65 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  res to convert..
2e90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2ea0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2eb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2ec0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61        /// The ma
2ed0: 6e 61 67 65 64 20 61 72 72 61 79 20 6f 66 20 3c  naged array of <
2ee0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
2ef0: 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Value" /> object
2f00: 20 69 6e 73 74 61 6e 63 65 73 20 6f 72 0d 0a 20   instances or.. 
2f10: 20 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20         /// null 
2f20: 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
2f30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2f40: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69  urns>..        i
2f50: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 53  nternal static S
2f60: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 41 72 72  QLiteValue[] Arr
2f70: 61 79 46 72 6f 6d 53 69 7a 65 41 6e 64 49 6e 74  ayFromSizeAndInt
2f80: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
2f90: 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20    int argc,..   
2fa0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2fb0: 61 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20  argv..          
2fc0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2fe0: 61 72 67 63 20 3c 20 30 29 0d 0a 20 20 20 20 20  argc < 0)..     
2ff0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3000: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
3010: 20 20 20 20 20 20 20 69 66 20 28 61 72 67 76 20         if (argv 
3020: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
3030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3040: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
3050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
3060: 69 74 65 56 61 6c 75 65 5b 5d 20 72 65 73 75 6c  iteValue[] resul
3070: 74 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 56 61  t = new SQLiteVa
3080: 6c 75 65 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20 20  lue[argc];....  
3090: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
30a0: 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f 66  nt index = 0, of
30b0: 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20  fset = 0;..     
30c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
30d0: 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65  ndex < result.Le
30e0: 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20  ngth;..         
30f0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
3100: 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e  ++, offset += In
3110: 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20 20  tPtr.Size)..    
3120: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3130: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
3140: 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74 65 4d  r pArg = SQLiteM
3150: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
3160: 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74 29 3b  r(argv, offset);
3170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3180: 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78      result[index
3190: 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49 6e 74  ] = (pArg != Int
31a0: 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20  Ptr.Zero) ?..   
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c0: 20 6e 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65   new SQLiteValue
31d0: 28 70 41 72 67 29 20 3a 20 6e 75 6c 6c 3b 0d 0a  (pArg) : null;..
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
31f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3200: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
3210: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3220: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3230: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3280: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3290: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
32a0: 6e 64 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ndle Members..  
32b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
32c0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
32d0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64   Returns the und
32e0: 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e  erlying SQLite n
32f0: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73  ative handle ass
3300: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
3310: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
3320: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
3330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3350: 20 70 75 62 6c 69 63 20 49 6e 74 50 74 72 20 4e   public IntPtr N
3360: 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20 20  ativeHandle..   
3370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
3380: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
3390: 20 70 56 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20   pValue; }..    
33a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
33b0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
33c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3410: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3420: 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
3430: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
3440: 74 65 20 62 6f 6f 6c 20 70 65 72 73 69 73 74 65  te bool persiste
3450: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
3460: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3470: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e     /// Returns n
3480: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 6e  on-zero if the n
3490: 61 74 69 76 65 20 53 51 4c 69 74 65 20 76 61 6c  ative SQLite val
34a0: 75 65 20 68 61 73 20 62 65 65 6e 20 73 75 63 63  ue has been succ
34b0: 65 73 73 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20  essfully..      
34c0: 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65 64 20    /// persisted 
34d0: 61 73 20 61 20 6d 61 6e 61 67 65 64 20 76 61 6c  as a managed val
34e0: 75 65 20 77 69 74 68 69 6e 20 74 68 69 73 20 6f  ue within this o
34f0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 28  bject instance (
3500: 69 2e 65 2e 20 74 68 65 0d 0a 20 20 20 20 20 20  i.e. the..      
3510: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
3520: 22 56 61 6c 75 65 22 20 2f 3e 20 70 72 6f 70 65  "Value" /> prope
3530: 72 74 79 20 6d 61 79 20 74 68 65 6e 20 62 65 20  rty may then be 
3540: 72 65 61 64 20 73 75 63 63 65 73 73 66 75 6c 6c  read successfull
3550: 79 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y)...        ///
3560: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3570: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
3580: 20 50 65 72 73 69 73 74 65 64 0d 0a 20 20 20 20   Persisted..    
3590: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35a0: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
35b0: 70 65 72 73 69 73 74 65 64 3b 20 7d 0d 0a 20 20  persisted; }..  
35c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3620: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62        private ob
3630: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
3640: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3650: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3660: 49 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20 76  If the managed v
3670: 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 62  alue for this ob
3680: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
3690: 20 61 76 61 69 6c 61 62 6c 65 20 28 69 2e 65 2e   available (i.e.
36a0: 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   it..        ///
36b0: 20 68 61 73 20 62 65 65 6e 20 70 72 65 76 69 6f   has been previo
36c0: 75 73 6c 79 20 70 65 72 73 69 73 74 65 64 20 76  usly persisted v
36d0: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
36e0: 3d 22 50 65 72 73 69 73 74 22 20 2f 3e 29 20 6d  ="Persist" />) m
36f0: 65 74 68 6f 64 2c 0d 0a 20 20 20 20 20 20 20 20  ethod,..        
3700: 2f 2f 2f 20 74 68 61 74 20 76 61 6c 75 65 20 69  /// that value i
3710: 73 20 72 65 74 75 72 6e 65 64 3b 20 6f 74 68 65  s returned; othe
3720: 72 77 69 73 65 2c 20 61 6e 20 65 78 63 65 70 74  rwise, an except
3730: 69 6f 6e 20 69 73 20 74 68 72 6f 77 6e 2e 20 20  ion is thrown.  
3740: 54 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  The..        ///
3750: 20 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20   returned value 
3760: 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  may be null...  
3770: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3780: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
3790: 62 6c 69 63 20 6f 62 6a 65 63 74 20 56 61 6c 75  blic object Valu
37a0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
37b0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
37c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37e0: 20 28 21 70 65 72 73 69 73 74 65 64 29 0d 0a 20   (!persisted).. 
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
3800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3810: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
3820: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
3830: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3850: 20 20 20 20 22 76 61 6c 75 65 20 77 61 73 20 6e      "value was n
3860: 6f 74 20 70 65 72 73 69 73 74 65 64 22 29 3b 0d  ot persisted");.
3870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3880: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3890: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
38a0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
38b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
38c0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
38d0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3920: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3930: 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
3940: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
3950: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
3960: 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20         /// Gets 
3970: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
3980: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 61 73  type affinity as
3990: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
39a0: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
39b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
39c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
39d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
39e0: 20 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61    /// The type a
39f0: 66 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74  ffinity associat
3a00: 65 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c  ed with this val
3a10: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
3a20: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3a30: 20 20 20 20 20 70 75 62 6c 69 63 20 54 79 70 65       public Type
3a40: 41 66 66 69 6e 69 74 79 20 47 65 74 54 79 70 65  Affinity GetType
3a50: 41 66 66 69 6e 69 74 79 28 29 0d 0a 20 20 20 20  Affinity()..    
3a60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3a70: 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
3a80: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 72 65   IntPtr.Zero) re
3a90: 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  turn TypeAffinit
3aa0: 79 2e 4e 6f 6e 65 3b 0d 0a 20 20 20 20 20 20 20  y.None;..       
3ab0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
3ac0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
3ad0: 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 79  sqlite3_value_ty
3ae0: 70 65 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20  pe(pValue);..   
3af0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3b50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3b60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3b70: 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
3b80: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
3b90: 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64 20  ytes associated 
3ba0: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2c  with this value,
3bb0: 20 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   if..        ///
3bc0: 20 69 74 20 72 65 66 65 72 73 20 74 6f 20 61 20   it refers to a 
3bd0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
3be0: 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ring...        /
3bf0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3c00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
3c10: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
3c20: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
3c30: 62 79 74 65 73 20 61 73 73 6f 63 69 61 74 65 64  bytes associated
3c40: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
3c50: 2e 20 20 54 68 65 20 72 65 74 75 72 6e 65 64 20  .  The returned 
3c60: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f  value..        /
3c70: 2f 2f 20 6d 61 79 20 62 65 20 7a 65 72 6f 2e 0d  // may be zero..
3c80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
3c90: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
3ca0: 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 42   public int GetB
3cb0: 79 74 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20  ytes()..        
3cc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3cd0: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
3ce0: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
3cf0: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
3d00: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
3d10: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3d20: 74 65 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28  te3_value_bytes(
3d30: 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  pValue);..      
3d40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
3d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3da0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3db0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74  .        /// Get
3dc0: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
3dd0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
3de0: 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65  32" /> associate
3df0: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
3e00: 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d       /// value..
3e10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3e20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3e30: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3e40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
3e50: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32  <see cref="Int32
3e60: 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 20  " /> associated 
3e70: 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e  with this value.
3e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
3e90: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3ea0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74    public int Get
3eb0: 49 6e 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  Int()..        {
3ec0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
3ed0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
3ee0: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
3ef0: 64 65 66 61 75 6c 74 28 69 6e 74 29 3b 0d 0a 20  default(int);.. 
3f00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3f10: 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  n UnsafeNativeMe
3f20: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
3f30: 6c 75 65 5f 69 6e 74 28 70 56 61 6c 75 65 29 3b  lue_int(pValue);
3f40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
3f50: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
3f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3fa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
3fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3fc0: 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65   /// Gets and re
3fd0: 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63  turns the <see c
3fe0: 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61  ref="Int64" /> a
3ff0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
4000: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73          /// this
4010: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
4020: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4030: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4040: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4050: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
4060: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 61 73 73  f="Int64" /> ass
4070: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
4080: 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  s value...      
4090: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
40a0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
40b0: 20 6c 6f 6e 67 20 47 65 74 49 6e 74 36 34 28 29   long GetInt64()
40c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
40d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61           if (pVa
40e0: 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lue == IntPtr.Ze
40f0: 72 6f 29 20 72 65 74 75 72 6e 20 64 65 66 61 75  ro) return defau
4100: 6c 74 28 6c 6f 6e 67 29 3b 0d 0a 0d 0a 23 69 66  lt(long);....#if
4110: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
4120: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
4130: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4140: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
4150: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c 75  ods.sqlite3_valu
4160: 65 5f 69 6e 74 36 34 28 70 56 61 6c 75 65 29 3b  e_int64(pValue);
4170: 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f  ..#elif !SQLITE_
4180: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
4190: 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c 75 65        long value
41a0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
41b0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
41c0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
41d0: 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65 72  alue_int64_inter
41e0: 6f 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76  op(pValue, ref v
41f0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
4200: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
4210: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
4220: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
4230: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
4240: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
4250: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
4260: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
4270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
42b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
42c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
42d0: 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20     /// Gets and 
42e0: 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
42f0: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
4300: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
4310: 68 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  h this..        
4320: 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  /// value...    
4330: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4340: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4350: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4360: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
4370: 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
4380: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4390: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
43a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
43b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
43c0: 62 6c 69 63 20 64 6f 75 62 6c 65 20 47 65 74 44  blic double GetD
43d0: 6f 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  ouble()..       
43e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
43f0: 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
4400: 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72  tPtr.Zero) retur
4410: 6e 20 64 65 66 61 75 6c 74 28 64 6f 75 62 6c 65  n default(double
4420: 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  );....#if !PLATF
4430: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
4440: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
4450: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
4460: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4470: 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c  ite3_value_doubl
4480: 65 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69  e(pValue);..#eli
4490: 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41  f !SQLITE_STANDA
44a0: 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RD..            
44b0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 20 3d 20 30  double value = 0
44c0: 2e 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .0;..           
44d0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
44e0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
44f0: 75 65 5f 64 6f 75 62 6c 65 5f 69 6e 74 65 72 6f  ue_double_intero
4500: 70 28 70 56 61 6c 75 65 2c 20 72 65 66 20 76 61  p(pValue, ref va
4510: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
4520: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
4530: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
4540: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
4550: 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
4560: 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64 69  eption();..#endi
4570: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
4580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
45c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
45d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
45e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
45f0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
4600: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
4610: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
4620: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4630: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
4640: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
4650: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4660: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
4670: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
4680: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
4690: 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20  ref="String" /> 
46a0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
46b0: 74 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65  this value.  The
46c0: 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20 20   value is..     
46d0: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64     /// converted
46e0: 20 66 72 6f 6d 20 74 68 65 20 55 54 46 2d 38 20   from the UTF-8 
46f0: 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72 20 74  encoding prior t
4700: 6f 20 62 65 69 6e 67 20 72 65 74 75 72 6e 65 64  o being returned
4710: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4720: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4730: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
4740: 20 47 65 74 53 74 72 69 6e 67 28 29 0d 0a 20 20   GetString()..  
4750: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4760: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
4770: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
4780: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
4790: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
47a0: 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
47b0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 53 74 72       IntPtr pStr
47c0: 69 6e 67 3b 0d 0a 0d 0a 23 69 66 20 53 51 4c 49  ing;....#if SQLI
47d0: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
47e0: 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 20           length 
47f0: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
4800: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61  thods.sqlite3_va
4810: 6c 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65  lue_bytes(pValue
4820: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4830: 70 53 74 72 69 6e 67 20 3d 20 55 6e 73 61 66 65  pString = Unsafe
4840: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
4850: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74  lite3_value_text
4860: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  (pValue);..#else
4870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ..            le
4880: 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ngth = 0;....   
4890: 20 20 20 20 20 20 20 20 20 70 53 74 72 69 6e 67           pString
48a0: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
48b0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76  ethods.sqlite3_v
48c0: 61 6c 75 65 5f 74 65 78 74 5f 69 6e 74 65 72 6f  alue_text_intero
48d0: 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
48e0: 20 20 20 20 70 56 61 6c 75 65 2c 20 72 65 66 20      pValue, ref 
48f0: 6c 65 6e 67 74 68 29 3b 0d 0a 23 65 6e 64 69 66  length);..#endif
4900: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4910: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 53 74 72  return SQLiteStr
4920: 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74  ing.StringFromUt
4930: 66 38 49 6e 74 50 74 72 28 70 53 74 72 69 6e 67  f8IntPtr(pString
4940: 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20  , length);..    
4950: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4960: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
49b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
49c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
49d0: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
49e0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 42  the <see cref="B
49f0: 79 74 65 22 20 2f 3e 20 61 72 72 61 79 20 61 73  yte" /> array as
4a00: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
4a10: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
4a20: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20  value...        
4a30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4a40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
4a50: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
4a60: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
4a70: 3d 22 42 79 74 65 22 20 2f 3e 20 61 72 72 61 79  ="Byte" /> array
4a80: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
4a90: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
4aa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
4ab0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
4ac0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 47 65 74 42  blic byte[] GetB
4ad0: 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  lob()..        {
4ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
4af0: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
4b00: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
4b10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
4b20: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
4b30: 74 65 42 79 74 65 73 2e 46 72 6f 6d 49 6e 74 50  teBytes.FromIntP
4b40: 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
4b50: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
4b60: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
4b70: 5f 76 61 6c 75 65 5f 62 6c 6f 62 28 70 56 61 6c  _value_blob(pVal
4b80: 75 65 29 2c 20 47 65 74 42 79 74 65 73 28 29 29  ue), GetBytes())
4b90: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
4ba0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4bf0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4c00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
4c10: 20 20 2f 2f 2f 20 55 73 65 73 20 74 68 65 20 6e    /// Uses the n
4c20: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
4c30: 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61 6e 64  le to obtain and
4c40: 20 73 74 6f 72 65 20 74 68 65 20 6d 61 6e 61 67   store the manag
4c50: 65 64 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20  ed value..      
4c60: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 69 73 20 6f    /// for this o
4c70: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2c 20  bject instance, 
4c80: 74 68 75 73 20 73 61 76 69 6e 67 20 69 74 20 66  thus saving it f
4c90: 6f 72 20 6c 61 74 65 72 20 75 73 65 2e 20 20 54  or later use.  T
4ca0: 68 65 20 74 79 70 65 0d 0a 20 20 20 20 20 20 20  he type..       
4cb0: 20 2f 2f 2f 20 6f 66 20 74 68 65 20 6d 61 6e 61   /// of the mana
4cc0: 67 65 64 20 76 61 6c 75 65 20 69 73 20 64 65 74  ged value is det
4cd0: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 74  ermined by the t
4ce0: 79 70 65 20 61 66 66 69 6e 69 74 79 20 6f 66 20  ype affinity of 
4cf0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
4d00: 20 6e 61 74 69 76 65 20 76 61 6c 75 65 2e 20 20   native value.  
4d10: 49 66 20 74 68 65 20 74 79 70 65 20 61 66 66 69  If the type affi
4d20: 6e 69 74 79 20 69 73 20 6e 6f 74 20 72 65 63 6f  nity is not reco
4d30: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
4d40: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
4d50: 6f 64 2c 20 6e 6f 20 77 6f 72 6b 20 69 73 20 64  od, no work is d
4d60: 6f 6e 65 20 61 6e 64 20 66 61 6c 73 65 20 69 73  one and false is
4d70: 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
4d80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4d90: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
4da0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
4db0: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
4dc0: 69 66 20 74 68 65 20 6e 61 74 69 76 65 20 76 61  if the native va
4dd0: 6c 75 65 20 77 61 73 20 70 65 72 73 69 73 74 65  lue was persiste
4de0: 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0d  d successfully..
4df0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
4e00: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
4e10: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72   public bool Per
4e20: 73 69 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20  sist()..        
4e30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
4e40: 77 69 74 63 68 20 28 47 65 74 54 79 70 65 41 66  witch (GetTypeAf
4e50: 66 69 6e 69 74 79 28 29 29 0d 0a 20 20 20 20 20  finity())..     
4e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
4e80: 79 70 65 41 66 66 69 6e 69 74 79 2e 55 6e 69 6e  ypeAffinity.Unin
4e90: 69 74 69 61 6c 69 7a 65 64 3a 0d 0a 20 20 20 20  itialized:..    
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4ec0: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4ed0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41    PreventNativeA
4f00: 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20  ccess();..      
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73    return (persis
4f30: 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20  ted = true);..  
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
4f60: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41 66       case TypeAf
4f70: 66 69 6e 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20  finity.Int64:.. 
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4fb0: 6c 75 65 20 3d 20 47 65 74 49 6e 74 36 34 28 29  lue = GetInt64()
4fc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
4fd0: 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76 65             Preve
4fe0: 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28 29  ntNativeAccess()
4ff0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5000: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
5010: 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20 74  n (persisted = t
5020: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
5030: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5050: 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  se TypeAffinity.
5060: 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20  Double:..       
5070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
50a0: 47 65 74 44 6f 75 62 6c 65 28 29 3b 0d 0a 20 20  GetDouble();..  
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74        PreventNat
50d0: 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20  iveAccess();..  
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70 65        return (pe
5100: 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b  rsisted = true);
5110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5120: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5130: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
5140: 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74 3a  peAffinity.Text:
5150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5160: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5180: 20 76 61 6c 75 65 20 3d 20 47 65 74 53 74 72 69   value = GetStri
5190: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
51b0: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
51c0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
51e0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
51f0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
5200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5220: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
5230: 69 74 79 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20  ity.Blob:..     
5240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5260: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
5270: 3d 20 47 65 74 42 79 74 65 73 28 29 3b 0d 0a 20  = GetBytes();.. 
5280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5290: 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e 61         PreventNa
52a0: 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a 20  tiveAccess();.. 
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 70         return (p
52d0: 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65 29  ersisted = true)
52e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
52f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5300: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
5310: 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c  ypeAffinity.Null
5320: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5330: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 20 20 76 61 6c 75 65 20 3d 20 44 42 4e 75 6c 6c    value = DBNull
5360: 2e 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  .Value;..       
5370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5380: 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63   PreventNativeAc
5390: 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
53a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53b0: 20 72 65 74 75 72 6e 20 28 70 65 72 73 69 73 74   return (persist
53c0: 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20  ed = true);..   
53d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
53f0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
5400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5410: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5430: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
5460: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5470: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5480: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
5490: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
54f0: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
5500: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
5510: 20 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20   Enumeration..  
5520: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5530: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  .    /// These a
5540: 72 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76  re the allowed v
5550: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6f 70  alues for the op
5560: 65 72 61 74 6f 72 73 20 74 68 61 74 20 61 72 65  erators that are
5570: 20 70 61 72 74 20 6f 66 20 61 0d 0a 20 20 20 20   part of a..    
5580: 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 20 74  /// constraint t
5590: 65 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45  erm in the WHERE
55a0: 20 63 6c 61 75 73 65 20 6f 66 20 61 20 71 75 65   clause of a que
55b0: 72 79 20 74 68 61 74 20 75 73 65 73 20 61 20 76  ry that uses a v
55c0: 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20  irtual..    /// 
55d0: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  table...    /// 
55e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
55f0: 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
5600: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
5610: 74 4f 70 20 3a 20 62 79 74 65 0d 0a 20 20 20 20  tOp : byte..    
5620: 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
5630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5640: 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
5650: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
5660: 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f  equality operato
5670: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
5680: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5690: 20 20 20 20 45 71 75 61 6c 54 6f 20 3d 20 32 2c      EqualTo = 2,
56a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
56b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
56c0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75     /// This valu
56d0: 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65  e represents the
56e0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 70   greater than op
56f0: 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20  erator...       
5700: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5710: 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65 72  .        Greater
5720: 54 68 61 6e 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  Than = 4,....   
5730: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
5740: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5750: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
5760: 73 65 6e 74 73 20 74 68 65 20 6c 65 73 73 20 74  sents the less t
5770: 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20  han or equal to 
5780: 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20  operator...     
5790: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
57a0: 3e 0d 0a 20 20 20 20 20 20 20 20 4c 65 73 73 54  >..        LessT
57b0: 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d 20 38  hanOrEqualTo = 8
57c0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
57d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
57e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
57f0: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
5800: 65 20 6c 65 73 73 20 74 68 61 6e 20 6f 70 65 72  e less than oper
5810: 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ator...        /
5820: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5830: 20 20 20 20 20 20 20 4c 65 73 73 54 68 61 6e 20         LessThan 
5840: 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  = 16,....       
5850: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5860: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
5870: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
5880: 73 20 74 68 65 20 67 72 65 61 74 65 72 20 74 68  s the greater th
5890: 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 6f  an or equal to o
58a0: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
58b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
58c0: 0d 0a 20 20 20 20 20 20 20 20 47 72 65 61 74 65  ..        Greate
58d0: 72 54 68 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d  rThanOrEqualTo =
58e0: 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20   32,....        
58f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
5900: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
5910: 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73  value represents
5920: 20 74 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61   the MATCH opera
5930: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
5940: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5950: 20 20 20 20 20 20 4d 61 74 63 68 20 3d 20 36 34        Match = 64
5960: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
5970: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5980: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
5990: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
59a0: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 2e  e LIKE operator.
59b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
59c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
59d0: 20 20 4c 69 6b 65 20 3d 20 36 35 2c 0d 0a 0d 0a    Like = 65,....
59e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
59f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5a00: 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
5a10: 70 72 65 73 65 6e 74 73 20 74 68 65 20 47 4c 4f  presents the GLO
5a20: 42 20 6f 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20  B operator...   
5a30: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5a40: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 47 6c 6f  ry>..        Glo
5a50: 62 20 3d 20 36 36 2c 0d 0a 0d 0a 20 20 20 20 20  b = 66,....     
5a60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
5a80: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
5a90: 6e 74 73 20 74 68 65 20 52 45 47 45 58 50 20 6f  nts the REGEXP o
5aa0: 70 65 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20  perator...      
5ab0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5ac0: 0d 0a 20 20 20 20 20 20 20 20 52 65 67 65 78 70  ..        Regexp
5ad0: 20 3d 20 36 37 0d 0a 20 20 20 20 7d 0d 0a 20 20   = 67..    }..  
5ae0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
5af0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5b40: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
5b50: 51 4c 69 74 65 49 6e 64 65 78 46 6c 61 67 73 20  QLiteIndexFlags 
5b60: 45 6e 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20 20  Enumeration..   
5b70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5b80: 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72      /// These ar
5b90: 65 20 74 68 65 20 61 6c 6c 6f 77 65 64 20 76 61  e the allowed va
5ba0: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 69 6e 64  lues for the ind
5bb0: 65 78 20 66 6c 61 67 73 20 66 72 6f 6d 20 74 68  ex flags from th
5bc0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  e..    /// <see 
5bd0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
5be0: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
5bf0: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
5c00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5c10: 61 72 79 3e 0d 0a 20 20 20 20 5b 46 6c 61 67 73  ary>..    [Flags
5c20: 28 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ()]..    public 
5c30: 65 6e 75 6d 20 53 51 4c 69 74 65 49 6e 64 65 78  enum SQLiteIndex
5c40: 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  Flags..    {..  
5c50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
5c60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
5c70: 20 4e 6f 20 73 70 65 63 69 61 6c 20 68 61 6e 64   No special hand
5c80: 6c 69 6e 67 2e 20 20 54 68 69 73 20 69 73 20 74  ling.  This is t
5c90: 68 65 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20  he default...   
5ca0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
5cb0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 4e 6f 6e  ry>..        Non
5cc0: 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20  e = 0x0,....    
5cd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5cf0: 68 69 73 20 76 61 6c 75 65 20 69 6e 64 69 63 61  his value indica
5d00: 74 65 73 20 74 68 61 74 20 74 68 65 20 73 63 61  tes that the sca
5d10: 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78 20 77  n of the index w
5d20: 69 6c 6c 20 76 69 73 69 74 20 61 74 0d 0a 20 20  ill visit at..  
5d30: 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 73 74 20 6f        /// most o
5d40: 6e 65 20 72 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ne row...       
5d50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5d60: 0a 20 20 20 20 20 20 20 20 53 63 61 6e 55 6e 69  .        ScanUni
5d70: 71 75 65 20 3d 20 30 78 31 0d 0a 20 20 20 20 7d  que = 0x1..    }
5d80: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
5d90: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5de0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
5df0: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  on SQLiteIndexCo
5e00: 6e 73 74 72 61 69 6e 74 20 48 65 6c 70 65 72 20  nstraint Helper 
5e10: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
5e20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5e30: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
5e40: 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69  resents the nati
5e50: 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ve sqlite3_index
5e60: 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75  _constraint stru
5e70: 63 74 75 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 66  cture..    /// f
5e80: 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
5e90: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
5ea0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5eb0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
5ec0: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
5ed0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 0d  IndexConstraint.
5ee0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
5ef0: 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c  #region Internal
5f00: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
5f10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
5f20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5f30: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
5f40: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
5f50: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
5f60: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
5f70: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
5f80: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
5f90: 73 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72  straint structur
5fa0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
5fb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5fc0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5fd0: 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e 74 22  ame="constraint"
5fe0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
5ff0: 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65  he native sqlite
6000: 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69  3_index_constrai
6010: 6e 74 20 73 74 72 75 63 74 75 72 65 20 74 6f 20  nt structure to 
6020: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
6030: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6040: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
6050: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
6060: 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
6070: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
6080: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
6090: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ex_constraint co
60a0: 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 20 20  nstraint..      
60b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
60c0: 20 20 20 20 20 3a 20 74 68 69 73 28 63 6f 6e 73       : this(cons
60d0: 74 72 61 69 6e 74 2e 69 43 6f 6c 75 6d 6e 2c 20  traint.iColumn, 
60e0: 63 6f 6e 73 74 72 61 69 6e 74 2e 6f 70 2c 20 63  constraint.op, c
60f0: 6f 6e 73 74 72 61 69 6e 74 2e 75 73 61 62 6c 65  onstraint.usable
6100: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6110: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
6120: 2e 69 54 65 72 6d 4f 66 66 73 65 74 29 0d 0a 20  .iTermOffset).. 
6130: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6140: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
6150: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
6160: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6170: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
6180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
61d0: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
61e0: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
61f0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6200: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6210: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
6220: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
6230: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
6240: 20 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64   specified field
6250: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
6260: 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lues...        /
6270: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6280: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
6290: 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22  m name="iColumn"
62a0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
62b0: 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
62c0: 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74  nd side of const
62d0: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
62e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
62f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6300: 20 6e 61 6d 65 3d 22 6f 70 22 3e 0d 0a 20 20 20   name="op">..   
6310: 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61       /// Constra
6320: 69 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73  int operator (<s
6330: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
6340: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
6350: 22 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20  " />)...        
6360: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6370: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6380: 20 6e 61 6d 65 3d 22 75 73 61 62 6c 65 22 3e 0d   name="usable">.
6390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75  .        /// Tru
63a0: 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74 72  e if this constr
63b0: 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e 0d  aint is usable..
63c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
63d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
63e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
63f0: 69 54 65 72 6d 4f 66 66 73 65 74 22 3e 0d 0a 20  iTermOffset">.. 
6400: 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 64 20         /// Used 
6410: 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20 3c 73 65  internally - <se
6420: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
6430: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
6440: 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20 20  tIndex" />..    
6450: 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 69      /// should i
6460: 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  gnore...        
6470: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
6490: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
64a0: 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
64b0: 20 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 2c 0d 0a    int iColumn,..
64c0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
64d0: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
64e0: 74 4f 70 20 6f 70 2c 0d 0a 20 20 20 20 20 20 20  tOp op,..       
64f0: 20 20 20 20 20 62 79 74 65 20 75 73 61 62 6c 65       byte usable
6500: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
6510: 6e 74 20 69 54 65 72 6d 4f 66 66 73 65 74 0d 0a  nt iTermOffset..
6520: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
6530: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6540: 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c 75        this.iColu
6550: 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20  mn = iColumn;.. 
6560: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6570: 6f 70 20 3d 20 6f 70 3b 0d 0a 20 20 20 20 20 20  op = op;..      
6580: 20 20 20 20 20 20 74 68 69 73 2e 75 73 61 62 6c        this.usabl
6590: 65 20 3d 20 75 73 61 62 6c 65 3b 0d 0a 20 20 20  e = usable;..   
65a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 54           this.iT
65b0: 65 72 6d 4f 66 66 73 65 74 20 3d 20 69 54 65 72  ermOffset = iTer
65c0: 6d 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  mOffset;..      
65d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
65e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
65f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
6640: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6650: 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20 20  lic Fields..    
6660: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6670: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
6680: 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68 61  olumn on left-ha
6690: 6e 64 20 73 69 64 65 20 6f 66 20 63 6f 6e 73 74  nd side of const
66a0: 72 61 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  raint...        
66b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
66c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
66d0: 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20  nt iColumn;.... 
66e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
66f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6730: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6750: 2f 2f 2f 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f  /// Constraint o
6760: 70 65 72 61 74 6f 72 20 28 3c 73 65 65 20 63 72  perator (<see cr
6770: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
6780: 6f 6e 73 74 72 61 69 6e 74 4f 70 22 20 2f 3e 29  onstraintOp" />)
6790: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
67a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
67b0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
67c0: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f  IndexConstraintO
67d0: 70 20 6f 70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  p op;....       
67e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6820: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6830: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6840: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72  ..        /// Tr
6850: 75 65 20 69 66 20 74 68 69 73 20 63 6f 6e 73 74  ue if this const
6860: 72 61 69 6e 74 20 69 73 20 75 73 61 62 6c 65 2e  raint is usable.
6870: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6880: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6890: 20 20 70 75 62 6c 69 63 20 62 79 74 65 20 75 73    public byte us
68a0: 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  able;....       
68b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6900: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6910: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73  ..        /// Us
6920: 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d 20  ed internally - 
6930: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6940: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6950: 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20  BestIndex" />.. 
6960: 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c         /// shoul
6970: 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20 20  d ignore...     
6980: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6990: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
69a0: 63 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73 65  c int iTermOffse
69b0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  t;..        #end
69c0: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
69d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
69e0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
6a40: 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72  SQLiteIndexOrder
6a50: 42 79 20 48 65 6c 70 65 72 20 43 6c 61 73 73 0d  By Helper Class.
6a60: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6a70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
6a80: 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74   class represent
6a90: 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
6aa0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
6ab0: 62 79 20 73 74 72 75 63 74 75 72 65 20 66 72 6f  by structure fro
6ac0: 6d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 53  m..    /// the S
6ad0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
6ae0: 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
6af0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
6b00: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
6b10: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
6b20: 72 42 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rBy..    {..    
6b30: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
6b40: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
6b50: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
6b60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6b70: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
6b80: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
6b90: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
6ba0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
6bb0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
6bc0: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
6bd0: 5f 6f 72 64 65 72 62 79 20 73 74 72 75 63 74 75  _orderby structu
6be0: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
6bf0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6c00: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6c10: 6e 61 6d 65 3d 22 6f 72 64 65 72 42 79 22 3e 0d  name="orderBy">.
6c20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
6c30: 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
6c40: 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74  index_orderby st
6c50: 72 75 63 74 75 72 65 20 74 6f 20 75 73 65 2e 0d  ructure to use..
6c60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6c70: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69  aram>..        i
6c80: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e  nternal SQLiteIn
6c90: 64 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20  dexOrderBy(..   
6ca0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
6cb0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
6cc0: 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72  ite3_index_order
6cd0: 62 79 20 6f 72 64 65 72 42 79 0d 0a 20 20 20 20  by orderBy..    
6ce0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
6cf0: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6f 72         : this(or
6d00: 64 65 72 42 79 2e 69 43 6f 6c 75 6d 6e 2c 20 6f  derBy.iColumn, o
6d10: 72 64 65 72 42 79 2e 64 65 73 63 29 0d 0a 20 20  rderBy.desc)..  
6d20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6d30: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
6d40: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
6d50: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
6d60: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6dc0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6dd0: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
6de0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6df0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6e00: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
6e10: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
6e20: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
6e30: 73 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 0d  specified field.
6e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c  .        /// val
6e50: 75 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ues...        //
6e60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e70: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6e80: 20 6e 61 6d 65 3d 22 69 43 6f 6c 75 6d 6e 22 3e   name="iColumn">
6e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6ea0: 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a 20 20  lumn number...  
6eb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
6ec0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
6ed0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73  <param name="des
6ee0: 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  c">..        ///
6ef0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
6f00: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d   False for ASC..
6f10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
6f20: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
6f30: 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e 64  rivate SQLiteInd
6f40: 65 78 4f 72 64 65 72 42 79 28 0d 0a 20 20 20 20  exOrderBy(..    
6f50: 20 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c          int iCol
6f60: 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  umn,..          
6f70: 20 20 62 79 74 65 20 64 65 73 63 0d 0a 20 20 20    byte desc..   
6f80: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
6f90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6fa0: 20 20 20 74 68 69 73 2e 69 43 6f 6c 75 6d 6e 20     this.iColumn 
6fb0: 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a 20 20 20 20  = iColumn;..    
6fc0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 73          this.des
6fd0: 63 20 3d 20 64 65 73 63 3b 0d 0a 20 20 20 20 20  c = desc;..     
6fe0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
6ff0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7000: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7050: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
7060: 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20 20 20  blic Fields..   
7070: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
7080: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
7090: 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 0d 0a  Column number...
70a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
70b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
70c0: 70 75 62 6c 69 63 20 69 6e 74 20 69 43 6f 6c 75  public int iColu
70d0: 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  mn;....        /
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
7130: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65          /// True
7150: 20 66 6f 72 20 44 45 53 43 2e 20 20 46 61 6c 73   for DESC.  Fals
7160: 65 20 66 6f 72 20 41 53 43 2e 0d 0a 20 20 20 20  e for ASC...    
7170: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7180: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
7190: 69 63 20 62 79 74 65 20 64 65 73 63 3b 0d 0a 20  ic byte desc;.. 
71a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
71b0: 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  n..    }..    #e
71c0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7220: 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
7230: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
7240: 55 73 61 67 65 20 48 65 6c 70 65 72 20 43 6c 61  Usage Helper Cla
7250: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
7260: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
7270: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
7280: 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65 20  ents the native 
7290: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
72a0: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 0d 0a  nstraint_usage..
72b0: 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
72c0: 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  e from the SQLit
72d0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
72e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
72f0: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
7300: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
7310: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
7320: 6e 74 55 73 61 67 65 0d 0a 20 20 20 20 7b 0d 0a  ntUsage..    {..
7330: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7340: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
7350: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
7360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7370: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
7380: 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69  ucts a default i
7390: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
73a0: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
73b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
73c0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
73d0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
73e0: 74 72 61 69 6e 74 55 73 61 67 65 28 29 0d 0a 20  traintUsage().. 
73f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7400: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
7410: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
7420: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
7480: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7490: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
74a0: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
74b0: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
74c0: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
74d0: 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
74e0: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64   /// sqlite3_ind
74f0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
7500: 61 67 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  age structure...
7510: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
7520: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
7530: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7540: 22 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  "constraintUsage
7550: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7560: 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74  The native sqlit
7570: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
7580: 69 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74  int_usage struct
7590: 75 72 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ure to use...   
75a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
75b0: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
75c0: 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 43  nal SQLiteIndexC
75d0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d  onstraintUsage(.
75e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
75f0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
7600: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
7610: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
7620: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 0d  constraintUsage.
7630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
7640: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
7650: 69 73 28 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  is(constraintUsa
7660: 67 65 2e 61 72 67 76 49 6e 64 65 78 2c 20 63 6f  ge.argvIndex, co
7670: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2e 6f 6d  nstraintUsage.om
7680: 69 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  it)..        {..
7690: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
76a0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
76b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
76c0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
76d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7720: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7730: 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74  rivate Construct
7740: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ors..        ///
7750: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7760: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
7770: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
7780: 66 20 74 68 69 73 20 63 6c 61 73 73 20 75 73 69  f this class usi
7790: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
77a0: 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20   field..        
77b0: 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  /// values...   
77c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
77d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
77e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
77f0: 67 76 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20  gvIndex">..     
7800: 20 20 20 2f 2f 2f 20 49 66 20 67 72 65 61 74 65     /// If greate
7810: 72 20 74 68 61 6e 20 30 2c 20 63 6f 6e 73 74 72  r than 0, constr
7820: 61 69 6e 74 20 69 73 20 70 61 72 74 20 6f 66 20  aint is part of 
7830: 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 2e  argv to xFilter.
7840: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7850: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
7860: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
7870: 22 6f 6d 69 74 22 3e 0d 0a 20 20 20 20 20 20 20  "omit">..       
7880: 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64 65   /// Do not code
7890: 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69 73   a test for this
78a0: 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20   constraint...  
78b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
78c0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m>..        priv
78d0: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
78e0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28 0d  onstraintUsage(.
78f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
7900: 20 61 72 67 76 49 6e 64 65 78 2c 0d 0a 20 20 20   argvIndex,..   
7910: 20 20 20 20 20 20 20 20 20 62 79 74 65 20 6f 6d           byte om
7920: 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
7930: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7940: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61            this.a
7950: 72 67 76 49 6e 64 65 78 20 3d 20 61 72 67 76 49  rgvIndex = argvI
7960: 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndex;..         
7970: 20 20 20 74 68 69 73 2e 6f 6d 69 74 20 3d 20 6f     this.omit = o
7980: 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  mit;..        }.
7990: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
79a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7a00: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
7a10: 20 46 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20   Fields..       
7a20: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7a30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 67          /// If g
7a40: 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20 63  reater than 0, c
7a50: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61 72  onstraint is par
7a60: 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46 69  t of argv to xFi
7a70: 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lter...        /
7a80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7a90: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
7aa0: 74 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a 0d 0a  t argvIndex;....
7ab0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7b00: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
7b10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7b20: 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 20 63 6f 64    /// Do not cod
7b30: 65 20 61 20 74 65 73 74 20 66 6f 72 20 74 68 69  e a test for thi
7b40: 73 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20  s constraint... 
7b50: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
7b60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
7b70: 75 62 6c 69 63 20 62 79 74 65 20 6f 6d 69 74 3b  ublic byte omit;
7b80: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7b90: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
7ba0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7bb0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7c00: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
7c10: 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20  LiteIndexInputs 
7c20: 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20  Helper Class..  
7c30: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7c40: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
7c50: 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 74  ass represents t
7c60: 68 65 20 76 61 72 69 6f 75 73 20 69 6e 70 75 74  he various input
7c70: 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
7c80: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20  e SQLite core.. 
7c90: 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 74     /// library t
7ca0: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
7cb0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
7cc0: 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22  odule.BestIndex"
7cd0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
7ce0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7cf0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
7d00: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 49  ed class SQLiteI
7d10: 6e 64 65 78 49 6e 70 75 74 73 0d 0a 20 20 20 20  ndexInputs..    
7d20: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
7d30: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73  on Internal Cons
7d40: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
7d50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7d60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
7d70: 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
7d80: 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73  nce of this clas
7d90: 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
7da0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7db0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7dc0: 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74  ame="nConstraint
7dd0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
7de0: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73  The number of <s
7df0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
7e00: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20  ndexConstraint" 
7e10: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
7e20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
7e30: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
7e40: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
7e50: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7e60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7e70: 61 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d  ame="nOrderBy">.
7e80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
7e90: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
7ea0: 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65  cref="SQLiteInde
7eb0: 78 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73  xOrderBy" /> ins
7ec0: 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20  tances to..     
7ed0: 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63     /// pre-alloc
7ee0: 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a  ate space for...
7ef0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
7f00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  ram>..        in
7f10: 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64  ternal SQLiteInd
7f20: 65 78 49 6e 70 75 74 73 28 69 6e 74 20 6e 43 6f  exInputs(int nCo
7f30: 6e 73 74 72 61 69 6e 74 2c 20 69 6e 74 20 6e 4f  nstraint, int nO
7f40: 72 64 65 72 42 79 29 0d 0a 20 20 20 20 20 20 20  rderBy)..       
7f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7f60: 63 6f 6e 73 74 72 61 69 6e 74 73 20 3d 20 6e 65  constraints = ne
7f70: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  w SQLiteIndexCon
7f80: 73 74 72 61 69 6e 74 5b 6e 43 6f 6e 73 74 72 61  straint[nConstra
7f90: 69 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  int];..         
7fa0: 20 20 20 6f 72 64 65 72 42 79 73 20 3d 20 6e 65     orderBys = ne
7fb0: 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  w SQLiteIndexOrd
7fc0: 65 72 42 79 5b 6e 4f 72 64 65 72 42 79 5d 3b 0d  erBy[nOrderBy];.
7fd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7fe0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7ff0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
8000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
8050: 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
8060: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
8070: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49 6e  private SQLiteIn
8080: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20  dexConstraint[] 
8090: 63 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 20 20  constraints;..  
80a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
80b0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
80c0: 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73 65   An array of <se
80d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
80e0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f  dexConstraint" /
80f0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
8100: 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es,..        ///
8110: 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69 6e 67   each containing
8120: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73 75 70   information sup
8130: 70 6c 69 65 64 20 62 79 20 74 68 65 20 53 51 4c  plied by the SQL
8140: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
8150: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8160: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8170: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
8180: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b  IndexConstraint[
8190: 5d 20 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20  ] Constraints.. 
81a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
81b0: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
81c0: 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 3b 20  rn constraints; 
81d0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
81e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
81f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8230: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
8240: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  te SQLiteIndexOr
8250: 64 65 72 42 79 5b 5d 20 6f 72 64 65 72 42 79 73  derBy[] orderBys
8260: 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
8270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8280: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
8290: 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  f <see cref="SQL
82a0: 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22  iteIndexOrderBy"
82b0: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
82c0: 6e 63 65 73 2c 0d 0a 20 20 20 20 20 20 20 20 2f  nces,..        /
82d0: 2f 2f 20 65 61 63 68 20 63 6f 6e 74 61 69 6e 69  // each containi
82e0: 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 73  ng information s
82f0: 75 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 53  upplied by the S
8300: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
8310: 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry...        ///
8320: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8330: 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
8340: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d  teIndexOrderBy[]
8350: 20 4f 72 64 65 72 42 79 73 0d 0a 20 20 20 20 20   OrderBys..     
8360: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8370: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f    get { return o
8380: 72 64 65 72 42 79 73 3b 20 7d 0d 0a 20 20 20 20  rderBys; }..    
8390: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
83a0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
83b0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
83c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
83d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
8420: 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75  on SQLiteIndexOu
8430: 74 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61  tputs Helper Cla
8440: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
8450: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
8460: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
8470: 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73  ents the various
8480: 20 6f 75 74 70 75 74 73 20 70 72 6f 76 69 64 65   outputs provide
8490: 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20  d to the SQLite 
84a0: 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69  core..    /// li
84b0: 62 72 61 72 79 20 62 79 20 74 68 65 20 3c 73 65  brary by the <se
84c0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
84d0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73  anagedModule.Bes
84e0: 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f  tIndex" /> metho
84f0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
8500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
8510: 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  ic sealed class 
8520: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
8530: 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ts..    {..     
8540: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
8550: 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  nal Constructors
8560: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
8570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
8580: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
8590: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
85a0: 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
85b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
85c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
85d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f  <param name="nCo
85e0: 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20  nstraint">..    
85f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
8600: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
8610: 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73  "SQLiteIndexCons
8620: 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 20  traintUsage" /> 
8630: 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 20  instances..     
8640: 20 20 20 2f 2f 2f 20 74 6f 20 70 72 65 2d 61 6c     /// to pre-al
8650: 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72  locate space for
8660: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8670: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8680: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
8690: 49 6e 64 65 78 4f 75 74 70 75 74 73 28 69 6e 74  IndexOutputs(int
86a0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29 0d 0a 20   nConstraint).. 
86b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
86c0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
86d0: 55 73 61 67 65 73 20 3d 20 6e 65 77 20 53 51 4c  Usages = new SQL
86e0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
86f0: 6e 74 55 73 61 67 65 5b 6e 43 6f 6e 73 74 72 61  ntUsage[nConstra
8700: 69 6e 74 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int];....       
8710: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
8720: 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58 3a 20       // BUGFIX: 
8730: 43 72 65 61 74 65 20 74 68 65 20 5b 65 6d 70 74  Create the [empt
8740: 79 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 75 73  y] constraint us
8750: 61 67 65 73 20 6e 6f 77 20 73 6f 20 74 68 65 79  ages now so they
8760: 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20   can be..       
8770: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
8780: 75 73 65 64 20 62 79 20 74 68 65 20 78 42 65 73  used by the xBes
8790: 74 49 6e 64 65 78 20 63 61 6c 6c 62 61 63 6b 2e  tIndex callback.
87a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
87b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
87c0: 72 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69  r (int iConstrai
87d0: 6e 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61  nt = 0; iConstra
87e0: 69 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e  int < nConstrain
87f0: 74 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b  t; iConstraint++
8800: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8810: 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61     constraintUsa
8820: 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d  ges[iConstraint]
8830: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
8840: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
8850: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e();..        }.
8860: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
8870: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
8880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
88d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
88e0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 74  .        /// Det
88f0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 6e  ermines if the n
8900: 61 74 69 76 65 20 65 73 74 69 6d 61 74 65 64 52  ative estimatedR
8910: 6f 77 73 20 66 69 65 6c 64 20 63 61 6e 20 62 65  ows field can be
8920: 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f 6e 0d   used, based on.
8930: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
8940: 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73 69   available versi
8950: 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  on of the SQLite
8960: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
8970: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
8980: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
8990: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
89a0: 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
89b0: 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65 65 20  ero if the <see 
89c0: 63 72 65 66 3d 22 45 73 74 69 6d 61 74 65 64 52  cref="EstimatedR
89d0: 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79  ows" /> property
89e0: 20 69 73 20 73 75 70 70 6f 72 74 65 64 0d 0a 20   is supported.. 
89f0: 20 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68         /// by th
8a00: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8a10: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8a20: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8a30: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
8a40: 6f 6f 6c 20 43 61 6e 55 73 65 45 73 74 69 6d 61  ool CanUseEstima
8a50: 74 65 64 52 6f 77 73 28 29 0d 0a 20 20 20 20 20  tedRows()..     
8a60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8a70: 20 20 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69    if (UnsafeNati
8a80: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
8a90: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
8aa0: 62 65 72 28 29 20 3e 3d 20 33 30 30 38 30 30 32  ber() >= 3008002
8ab0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8ac0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
8ad0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
8ae0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
8af0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8b00: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
8b60: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
8b70: 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
8b80: 68 65 20 6e 61 74 69 76 65 20 66 6c 61 67 73 20  he native flags 
8b90: 66 69 65 6c 64 20 63 61 6e 20 62 65 20 75 73 65  field can be use
8ba0: 64 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d  d, based on the.
8bb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 76 61  .        /// ava
8bc0: 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 6f  ilable version o
8bd0: 66 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  f the SQLite cor
8be0: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
8bf0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8c00: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
8c10: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
8c20: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
8c30: 69 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  if the <see cref
8c40: 3d 22 49 6e 64 65 78 46 6c 61 67 73 22 20 2f 3e  ="IndexFlags" />
8c50: 20 70 72 6f 70 65 72 74 79 20 69 73 20 73 75 70   property is sup
8c60: 70 6f 72 74 65 64 20 62 79 0d 0a 20 20 20 20 20  ported by..     
8c70: 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
8c80: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
8c90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
8ca0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
8cb0: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 61 6e   public bool Can
8cc0: 55 73 65 49 6e 64 65 78 46 6c 61 67 73 28 29 0d  UseIndexFlags().
8cd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8ce0: 20 20 20 20 20 20 20 20 69 66 20 28 55 6e 73 61          if (Unsa
8cf0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
8d00: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8d10: 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 3e 3d 20 33  on_number() >= 3
8d20: 30 30 39 30 30 30 29 0d 0a 20 20 20 20 20 20 20  009000)..       
8d30: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8d40: 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
8d50: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
8d60: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
8d70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
8d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
8dd0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
8de0: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
8df0: 73 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  s if the native 
8e00: 66 6c 61 67 73 20 66 69 65 6c 64 20 63 61 6e 20  flags field can 
8e10: 62 65 20 75 73 65 64 2c 20 62 61 73 65 64 20 6f  be used, based o
8e20: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
8e30: 2f 2f 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72  // available ver
8e40: 73 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  sion of the SQLi
8e50: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
8e60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8e70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8e80: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
8e90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
8ea0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 3c 73 65  -zero if the <se
8eb0: 65 20 63 72 65 66 3d 22 43 6f 6c 75 6d 6e 73 55  e cref="ColumnsU
8ec0: 73 65 64 22 20 2f 3e 20 70 72 6f 70 65 72 74 79  sed" /> property
8ed0: 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79   is supported by
8ee0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
8ef0: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
8f00: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
8f10: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
8f20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
8f30: 6f 6f 6c 20 43 61 6e 55 73 65 43 6f 6c 75 6d 6e  ool CanUseColumn
8f40: 73 55 73 65 64 28 29 0d 0a 20 20 20 20 20 20 20  sUsed()..       
8f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8f60: 69 66 20 28 55 6e 73 61 66 65 4e 61 74 69 76 65  if (UnsafeNative
8f70: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
8f80: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
8f90: 72 28 29 20 3e 3d 20 33 30 31 30 30 30 30 29 0d  r() >= 3010000).
8fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8fb0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
8fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
8fd0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
8fe0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8ff0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9030: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9040: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
9050: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
9060: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
9070: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
9080: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
9090: 74 72 61 69 6e 74 55 73 61 67 65 73 3b 0d 0a 20  traintUsages;.. 
90a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
90b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
90c0: 2f 20 41 6e 20 61 72 72 61 79 20 6f 66 20 3c 73  / An array of <s
90d0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
90e0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73  ndexConstraintUs
90f0: 61 67 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a  age" /> object..
9100: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74          /// inst
9110: 61 6e 63 65 73 2c 20 65 61 63 68 20 63 6f 6e 74  ances, each cont
9120: 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  aining informati
9130: 6f 6e 20 74 6f 20 62 65 20 73 75 70 70 6c 69 65  on to be supplie
9140: 64 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 0d  d to the SQLite.
9150: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  .        /// cor
9160: 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
9170: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9180: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
9190: 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ic SQLiteIndexCo
91a0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d 20  nstraintUsage[] 
91b0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  ConstraintUsages
91c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
91d0: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
91e0: 65 74 75 72 6e 20 63 6f 6e 73 74 72 61 69 6e 74  eturn constraint
91f0: 55 73 61 67 65 73 3b 20 7d 0d 0a 20 20 20 20 20  Usages; }..     
9200: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9250: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
9260: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 69     private int i
9270: 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20 20  ndexNumber;..   
9280: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9290: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
92a0: 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68  Number used to h
92b0: 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65  elp identify the
92c0: 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
92d0: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
92e0: 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  l..        /// l
92f0: 61 74 65 72 20 62 65 20 70 72 6f 76 69 64 65 64  ater be provided
9300: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
9310: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9320: 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20  dModule.Filter" 
9330: 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
9340: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
9350: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
9360: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
9370: 69 6e 74 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d  int IndexNumber.
9380: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9390: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
93a0: 74 75 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72  turn indexNumber
93b0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
93c0: 20 73 65 74 20 7b 20 69 6e 64 65 78 4e 75 6d 62   set { indexNumb
93d0: 65 72 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  er = value; }.. 
93e0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
93f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
9440: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
9450: 74 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e  tring indexStrin
9460: 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  g;..        /// 
9470: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
9480: 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75 73     /// String us
9490: 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74  ed to help ident
94a0: 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65 64  ify the selected
94b0: 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61   index.  This va
94c0: 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  lue will..      
94d0: 20 20 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70    /// later be p
94e0: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c  rovided to the <
94f0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
9500: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46  eManagedModule.F
9510: 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  ilter" />..     
9520: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
9530: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
9540: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9550: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 49 6e  public string In
9560: 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20  dexString..     
9570: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9580: 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69    get { return i
9590: 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20  ndexString; }.. 
95a0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
95b0: 20 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 76   indexString = v
95c0: 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
95d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
95e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
95f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9620: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9630: 20 70 72 69 76 61 74 65 20 69 6e 74 20 6e 65 65   private int nee
9640: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
9650: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ng;..        ///
9660: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9670: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
9680: 20 69 66 20 74 68 65 20 69 6e 64 65 78 20 73 74   if the index st
9690: 72 69 6e 67 20 6d 75 73 74 20 62 65 20 66 72 65  ring must be fre
96a0: 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65  ed by the SQLite
96b0: 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
96c0: 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  // library...   
96d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
96e0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
96f0: 6c 69 63 20 69 6e 74 20 4e 65 65 64 54 6f 46 72  lic int NeedToFr
9700: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a 20  eeIndexString.. 
9710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9720: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
9730: 72 6e 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64  rn needToFreeInd
9740: 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a 20 20 20  exString; }..   
9750: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
9760: 65 65 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74  eedToFreeIndexSt
9770: 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ring = value; }.
9780: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9790: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
97a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
97d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
97e0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
97f0: 20 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73   int orderByCons
9800: 75 6d 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f  umed;..        /
9810: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9820: 20 20 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69        /// True i
9830: 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c 72 65  f output is alre
9840: 61 64 79 20 6f 72 64 65 72 65 64 2e 0d 0a 20 20  ady ordered...  
9850: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9860: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9870: 62 6c 69 63 20 69 6e 74 20 4f 72 64 65 72 42 79  blic int OrderBy
9880: 43 6f 6e 73 75 6d 65 64 0d 0a 20 20 20 20 20 20  Consumed..      
9890: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
98a0: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6f 72   get { return or
98b0: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 3b 20 7d  derByConsumed; }
98c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
98d0: 74 20 7b 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  t { orderByConsu
98e0: 6d 65 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  med = value; }..
98f0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9900: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9950: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
9960: 64 6f 75 62 6c 65 3f 20 65 73 74 69 6d 61 74 65  double? estimate
9970: 64 43 6f 73 74 3b 0d 0a 20 20 20 20 20 20 20 20  dCost;..        
9980: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9990: 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74 69 6d         /// Estim
99a0: 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75 73 69  ated cost of usi
99b0: 6e 67 20 74 68 69 73 20 69 6e 64 65 78 2e 20 20  ng this index.  
99c0: 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61 6c  Using a null val
99d0: 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20  ue here..       
99e0: 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20 74   /// indicates t
99f0: 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 65 73  hat a default es
9a00: 74 69 6d 61 74 65 64 20 63 6f 73 74 20 76 61 6c  timated cost val
9a10: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  ue should be use
9a20: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
9a30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9a40: 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
9a50: 65 3f 20 45 73 74 69 6d 61 74 65 64 43 6f 73 74  e? EstimatedCost
9a60: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9a70: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
9a80: 65 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 43  eturn estimatedC
9a90: 6f 73 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ost; }..        
9aa0: 20 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61      set { estima
9ab0: 74 65 64 43 6f 73 74 20 3d 20 76 61 6c 75 65 3b  tedCost = value;
9ac0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9ad0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
9ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
9b30: 61 74 65 20 6c 6f 6e 67 3f 20 65 73 74 69 6d 61  ate long? estima
9b40: 74 65 64 52 6f 77 73 3b 0d 0a 20 20 20 20 20 20  tedRows;..      
9b50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9b60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 73 74  .        /// Est
9b70: 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66  imated number of
9b80: 20 72 6f 77 73 20 72 65 74 75 72 6e 65 64 2e 20   rows returned. 
9b90: 20 55 73 69 6e 67 20 61 20 6e 75 6c 6c 20 76 61   Using a null va
9ba0: 6c 75 65 20 68 65 72 65 0d 0a 20 20 20 20 20 20  lue here..      
9bb0: 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 73 20    /// indicates 
9bc0: 74 68 61 74 20 61 20 64 65 66 61 75 6c 74 20 65  that a default e
9bd0: 73 74 69 6d 61 74 65 64 20 72 6f 77 73 20 76 61  stimated rows va
9be0: 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  lue should be us
9bf0: 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
9c00: 20 54 68 69 73 20 70 72 6f 70 65 72 74 79 20 68   This property h
9c10: 61 73 20 6e 6f 20 65 66 66 65 63 74 20 69 66 20  as no effect if 
9c20: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
9c30: 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61  library is not a
9c40: 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  t..        /// l
9c50: 65 61 73 74 20 76 65 72 73 69 6f 6e 20 33 2e 38  east version 3.8
9c60: 2e 32 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  .2...        ///
9c70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9c80: 20 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67       public long
9c90: 3f 20 45 73 74 69 6d 61 74 65 64 52 6f 77 73 0d  ? EstimatedRows.
9ca0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9cb0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
9cc0: 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 52 6f  turn estimatedRo
9cd0: 77 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ws; }..         
9ce0: 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74     set { estimat
9cf0: 65 64 52 6f 77 73 20 3d 20 76 61 6c 75 65 3b 20  edRows = value; 
9d00: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
9d10: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9d60: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
9d70: 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 46 6c  te SQLiteIndexFl
9d80: 61 67 73 3f 20 69 6e 64 65 78 46 6c 61 67 73 3b  ags? indexFlags;
9d90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9da0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9db0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 74   /// The flags t
9dc0: 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73  hat should be us
9dd0: 65 64 20 77 69 74 68 20 74 68 69 73 20 69 6e 64  ed with this ind
9de0: 65 78 2e 20 20 55 73 69 6e 67 20 61 20 6e 75 6c  ex.  Using a nul
9df0: 6c 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  l value..       
9e00: 20 2f 2f 2f 20 68 65 72 65 20 69 6e 64 69 63 61   /// here indica
9e10: 74 65 73 20 74 68 61 74 20 61 20 64 65 66 61 75  tes that a defau
9e20: 6c 74 20 66 6c 61 67 73 20 76 61 6c 75 65 20 73  lt flags value s
9e30: 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 20 20  hould be used.  
9e40: 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  This..        //
9e50: 2f 20 70 72 6f 70 65 72 74 79 20 68 61 73 20 6e  / property has n
9e60: 6f 20 65 66 66 65 63 74 20 69 66 20 74 68 65 20  o effect if the 
9e70: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
9e80: 61 72 79 20 69 73 20 6e 6f 74 20 61 74 20 6c 65  ary is not at le
9e90: 61 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ast..        ///
9ea0: 20 76 65 72 73 69 6f 6e 20 33 2e 39 2e 30 2e 0d   version 3.9.0..
9eb0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
9ec0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9ed0: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
9ee0: 64 65 78 46 6c 61 67 73 3f 20 49 6e 64 65 78 46  dexFlags? IndexF
9ef0: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lags..        {.
9f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9f10: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 46   { return indexF
9f20: 6c 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  lags; }..       
9f30: 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65 78       set { index
9f40: 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d  Flags = value; }
9f50: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
9f60: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9fb0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
9fc0: 65 20 6c 6f 6e 67 3f 20 63 6f 6c 75 6d 6e 73 55  e long? columnsU
9fd0: 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed;..        //
9fe0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9ff0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 3e 0d       /// <para>.
a000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e 64  .        /// Ind
a010: 69 63 61 74 65 73 20 77 68 69 63 68 20 63 6f 6c  icates which col
a020: 75 6d 6e 73 20 6f 66 20 74 68 65 20 76 69 72 74  umns of the virt
a030: 75 61 6c 20 74 61 62 6c 65 20 6d 61 79 20 62 65  ual table may be
a040: 20 72 65 71 75 69 72 65 64 20 62 79 20 74 68 65   required by the
a050: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 75  ..        /// cu
a060: 72 72 65 6e 74 20 73 63 61 6e 2e 20 20 56 69 72  rrent scan.  Vir
a070: 74 75 61 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d  tual table colum
a080: 6e 73 20 61 72 65 20 6e 75 6d 62 65 72 65 64 20  ns are numbered 
a090: 66 72 6f 6d 20 7a 65 72 6f 20 69 6e 20 74 68 65  from zero in the
a0a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72  ..        /// or
a0b0: 64 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65  der in which the
a0c0: 79 20 61 70 70 65 61 72 20 77 69 74 68 69 6e 20  y appear within 
a0d0: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
a0e0: 20 73 74 61 74 65 6d 65 6e 74 20 70 61 73 73 65   statement passe
a0f0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  d..        /// t
a100: 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72  o sqlite3_declar
a110: 65 5f 76 74 61 62 28 29 2e 20 20 46 6f 72 20 74  e_vtab().  For t
a120: 68 65 20 66 69 72 73 74 20 36 33 20 63 6f 6c 75  he first 63 colu
a130: 6d 6e 73 20 28 63 6f 6c 75 6d 6e 73 20 30 2d 36  mns (columns 0-6
a140: 32 29 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  2),..        ///
a150: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
a160: 6e 67 20 62 69 74 20 69 73 20 73 65 74 20 77 69  ng bit is set wi
a170: 74 68 69 6e 20 74 68 65 20 62 69 74 20 6d 61 73  thin the bit mas
a180: 6b 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  k if the column 
a190: 6d 61 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  may..        ///
a1a0: 20 62 65 20 72 65 71 75 69 72 65 64 20 62 79 20   be required by 
a1b0: 53 51 4c 69 74 65 2e 20 20 49 66 20 74 68 65 20  SQLite.  If the 
a1c0: 74 61 62 6c 65 20 68 61 73 20 61 74 20 6c 65 61  table has at lea
a1d0: 73 74 20 36 34 20 63 6f 6c 75 6d 6e 73 20 61 6e  st 64 columns an
a1e0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  d..        /// a
a1f0: 6e 79 20 63 6f 6c 75 6d 6e 20 74 6f 20 74 68 65  ny column to the
a200: 20 72 69 67 68 74 20 6f 66 20 74 68 65 20 66 69   right of the fi
a210: 72 73 74 20 36 33 20 69 73 20 72 65 71 75 69 72  rst 63 is requir
a220: 65 64 2c 20 74 68 65 6e 20 62 69 74 20 36 33 20  ed, then bit 63 
a230: 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
a240: 63 6f 6c 55 73 65 64 20 69 73 20 61 6c 73 6f 20  colUsed is also 
a250: 73 65 74 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  set.  In other w
a260: 6f 72 64 73 2c 20 63 6f 6c 75 6d 6e 20 69 43 6f  ords, column iCo
a270: 6c 20 6d 61 79 20 62 65 20 72 65 71 75 69 72 65  l may be require
a280: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  d..        /// i
a290: 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
a2a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
a2b0: 70 61 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f  para>..        /
a2c0: 2f 2f 20 3c 70 61 72 61 3e 3c 63 6f 64 65 3e 0d  // <para><code>.
a2d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 63 6f  .        /// (co
a2e0: 6c 55 73 65 64 20 26 61 6d 70 3b 20 28 28 73 71  lUsed &amp; ((sq
a2f0: 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 31 20 26  lite3_uint64)1 &
a300: 6c 74 3b 26 6c 74 3b 20 28 69 43 6f 6c 26 67 74  lt;&lt; (iCol&gt
a310: 3b 3d 36 33 20 3f 20 36 33 20 3a 20 69 43 6f 6c  ;=63 ? 63 : iCol
a320: 29 29 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  )))..        ///
a330: 20 3c 2f 63 6f 64 65 3e 3c 2f 70 61 72 61 3e 0d   </code></para>.
a340: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
a350: 72 61 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ra>..        ///
a360: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 6e 6f   evaluates to no
a370: 6e 2d 7a 65 72 6f 2e 20 20 55 73 69 6e 67 20 61  n-zero.  Using a
a380: 20 6e 75 6c 6c 20 76 61 6c 75 65 20 68 65 72 65   null value here
a390: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
a3a0: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  a..        /// d
a3b0: 65 66 61 75 6c 74 20 66 6c 61 67 73 20 76 61 6c  efault flags val
a3c0: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  ue should be use
a3d0: 64 2e 20 20 54 68 69 73 20 70 72 6f 70 65 72 74  d.  This propert
a3e0: 79 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20  y has no effect 
a3f0: 69 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  if..        /// 
a400: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
a410: 6c 69 62 72 61 72 79 20 69 73 20 6e 6f 74 20 61  library is not a
a420: 74 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e 20  t least version 
a430: 33 2e 31 30 2e 30 2e 0d 0a 20 20 20 20 20 20 20  3.10.0...       
a440: 20 2f 2f 2f 20 3c 2f 70 61 72 61 3e 0d 0a 20 20   /// </para>..  
a450: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
a470: 62 6c 69 63 20 6c 6f 6e 67 3f 20 43 6f 6c 75 6d  blic long? Colum
a480: 6e 73 55 73 65 64 0d 0a 20 20 20 20 20 20 20 20  nsUsed..        
a490: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67  {..            g
a4a0: 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6c 75  et { return colu
a4b0: 6d 6e 73 55 73 65 64 3b 20 7d 0d 0a 20 20 20 20  mnsUsed; }..    
a4c0: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f          set { co
a4d0: 6c 75 6d 6e 73 55 73 65 64 20 3d 20 76 61 6c 75  lumnsUsed = valu
a4e0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
a4f0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
a500: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
a510: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
a520: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a570: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
a580: 69 74 65 49 6e 64 65 78 20 48 65 6c 70 65 72 20  iteIndex Helper 
a590: 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Class..    /// <
a5a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
a5b0: 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70  / This class rep
a5c0: 72 65 73 65 6e 74 73 20 74 68 65 20 76 61 72 69  resents the vari
a5d0: 6f 75 73 20 69 6e 70 75 74 73 20 61 6e 64 20 6f  ous inputs and o
a5e0: 75 74 70 75 74 73 20 75 73 65 64 20 77 69 74 68  utputs used with
a5f0: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
a600: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
a610: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
a620: 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68  stIndex" /> meth
a630: 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  od...    /// </s
a640: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
a650: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
a660: 20 53 51 4c 69 74 65 49 6e 64 65 78 0d 0a 20 20   SQLiteIndex..  
a670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
a680: 67 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f  gion Internal Co
a690: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
a6a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a6b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
a6c0: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
a6d0: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
a6e0: 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
a6f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a700: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a710: 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69   name="nConstrai
a720: 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nt">..        //
a730: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
a740: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
a750: 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74  eIndexConstraint
a760: 22 20 2f 3e 20 28 61 6e 64 0d 0a 20 20 20 20 20  " /> (and..     
a770: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
a780: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  ="SQLiteIndexCon
a790: 73 74 72 61 69 6e 74 55 73 61 67 65 22 20 2f 3e  straintUsage" />
a7a0: 29 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a  ) instances to..
a7b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d          /// pre-
a7c0: 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66  allocate space f
a7d0: 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  or...        ///
a7e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
a7f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a800: 6d 65 3d 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a  me="nOrderBy">..
a810: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
a820: 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63  number of <see c
a830: 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78  ref="SQLiteIndex
a840: 4f 72 64 65 72 42 79 22 20 2f 3e 20 69 6e 73 74  OrderBy" /> inst
a850: 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20 20 20  ances to..      
a860: 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61    /// pre-alloca
a870: 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20  te space for... 
a880: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
a890: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
a8a0: 65 72 6e 61 6c 20 53 51 4c 69 74 65 49 6e 64 65  ernal SQLiteInde
a8b0: 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x(..            
a8c0: 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c  int nConstraint,
a8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
a8e0: 74 20 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20  t nOrderBy..    
a8f0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
a900: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a910: 20 20 69 6e 70 75 74 73 20 3d 20 6e 65 77 20 53    inputs = new S
a920: 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
a930: 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20 6e 4f  (nConstraint, nO
a940: 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20 20 20  rderBy);..      
a950: 20 20 20 20 20 20 6f 75 74 70 75 74 73 20 3d 20        outputs = 
a960: 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  new SQLiteIndexO
a970: 75 74 70 75 74 73 28 6e 43 6f 6e 73 74 72 61 69  utputs(nConstrai
a980: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
a990: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
a9a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
a9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
aa00: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
aa10: 65 20 4d 61 72 73 68 61 6c 20 48 65 6c 70 65 72  e Marshal Helper
aa20: 20 4d 65 74 68 6f 64 73 20 28 46 6f 72 20 54 65   Methods (For Te
aa30: 73 74 20 55 73 65 20 4f 6e 6c 79 29 0d 0a 20 20  st Use Only)..  
aa40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
aa50: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
aa60: 20 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74   Attempts to det
aa70: 65 72 6d 69 6e 65 20 74 68 65 20 73 74 72 75 63  ermine the struc
aa80: 74 75 72 65 20 73 69 7a 65 73 20 6e 65 65 64 65  ture sizes neede
aa90: 64 20 74 6f 20 63 72 65 61 74 65 20 61 6e 64 0d  d to create and.
aaa0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 70  .        /// pop
aab0: 75 6c 61 74 65 20 61 20 6e 61 74 69 76 65 0d 0a  ulate a native..
aac0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
aad0: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
aae0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
aaf0: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f  e3_index_info" /
ab00: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  >..        /// s
ab10: 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
ab20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ab30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
ab40: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65  param name="size
ab50: 4f 66 49 6e 66 6f 54 79 70 65 22 3e 0d 0a 20 20  OfInfoType">..  
ab60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 69        /// The si
ab70: 7a 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  ze of the native
ab80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
ab90: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
aba0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
abb0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
abc0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
abd0: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
abe0: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
abf0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
ac00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
ac10: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
ac20: 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 22  fConstraintType"
ac30: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
ac40: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6e  he size of the n
ac50: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
ac60: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e  // <see cref="Un
ac70: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
ac80: 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
ac90: 63 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 0d 0a  constraint" />..
aca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
acb0: 63 74 75 72 65 20 69 73 20 73 74 6f 72 65 64 20  cture is stored 
acc0: 68 65 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  here...        /
acd0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
ace0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
acf0: 6e 61 6d 65 3d 22 73 69 7a 65 4f 66 4f 72 64 65  name="sizeOfOrde
ad00: 72 42 79 54 79 70 65 22 3e 0d 0a 20 20 20 20 20  rByType">..     
ad10: 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20     /// The size 
ad20: 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  of the native.. 
ad30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
ad40: 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
ad50: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
ad60: 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 22  3_index_orderby"
ad70: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
ad80: 20 73 74 72 75 63 74 75 72 65 20 69 73 20 73 74   structure is st
ad90: 6f 72 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20  ored here...    
ada0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
adb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
adc0: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 4f  aram name="sizeO
add0: 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  fConstraintUsage
ade0: 54 79 70 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Type">..        
adf0: 2f 2f 2f 20 54 68 65 20 73 69 7a 65 20 6f 66 20  /// The size of 
ae00: 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
ae10: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
ae20: 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
ae30: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
ae40: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
ae50: 75 73 61 67 65 22 20 2f 3e 0d 0a 20 20 20 20 20  usage" />..     
ae60: 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
ae70: 20 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 2e   is stored here.
ae80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ae90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
aea0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
aeb0: 6f 69 64 20 53 69 7a 65 4f 66 4e 61 74 69 76 65  oid SizeOfNative
aec0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  (..            o
aed0: 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 49 6e 66  ut int sizeOfInf
aee0: 6f 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20  oType,..        
aef0: 20 20 20 20 6f 75 74 20 69 6e 74 20 73 69 7a 65      out int size
af00: 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  OfConstraintType
af10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ,..            o
af20: 75 74 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64  ut int sizeOfOrd
af30: 65 72 42 79 54 79 70 65 2c 0d 0a 20 20 20 20 20  erByType,..     
af40: 20 20 20 20 20 20 20 6f 75 74 20 69 6e 74 20 73         out int s
af50: 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55  izeOfConstraintU
af60: 73 61 67 65 54 79 70 65 0d 0a 20 20 20 20 20 20  sageType..      
af70: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
af80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
af90: 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 20 3d  sizeOfInfoType =
afa0: 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28   Marshal.SizeOf(
afb0: 74 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20  typeof(..       
afc0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
afd0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
afe0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 29  ite3_index_info)
aff0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b000: 20 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69    sizeOfConstrai
b010: 6e 74 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  ntType = Marshal
b020: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
b030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b040: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
b050: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
b060: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29 29 3b  ex_constraint));
b070: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b080: 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79 70  sizeOfOrderByTyp
b090: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
b0a0: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
b0b0: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
b0c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b0d0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
b0e0: 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20  derby));....    
b0f0: 20 20 20 20 20 20 20 20 73 69 7a 65 4f 66 43 6f          sizeOfCo
b100: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79 70  nstraintUsageTyp
b110: 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a 65  e = Marshal.Size
b120: 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20 20  Of(typeof(..    
b130: 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
b140: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
b150: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f  sqlite3_index_co
b160: 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 29 29  nstraint_usage))
b170: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
b180: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b1d0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
b1e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b1f0: 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
b200: 6f 20 61 6c 6c 6f 63 61 74 65 20 61 6e 64 20 69  o allocate and i
b210: 6e 69 74 69 61 6c 69 7a 65 20 61 20 6e 61 74 69  nitialize a nati
b220: 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
b230: 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66  <see cref="Unsaf
b240: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
b250: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66  qlite3_index_inf
b260: 6f 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  o" />..        /
b270: 2f 2f 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  // structure... 
b280: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
b290: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b2a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b2b0: 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e 0d 0a 20  nConstraint">.. 
b2c0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
b2d0: 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72  umber of <see cr
b2e0: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 43  ef="SQLiteIndexC
b2f0: 6f 6e 73 74 72 61 69 6e 74 22 20 2f 3e 20 69 6e  onstraint" /> in
b300: 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20 20  stances to..    
b310: 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c 6f      /// pre-allo
b320: 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e 0d  cate space for..
b330: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
b340: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
b350: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
b360: 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20 20  nOrderBy">..    
b370: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
b380: 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d  er of <see cref=
b390: 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65  "SQLiteIndexOrde
b3a0: 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  rBy" /> instance
b3b0: 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s to..        //
b3c0: 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73  / pre-allocate s
b3d0: 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20  pace for...     
b3e0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
b3f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
b400: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
b410: 2f 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20 61 6c  /// The newly al
b420: 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65 0d 0a  located native..
b430: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
b440: 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
b450: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
b460: 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22 20 2f  e3_index_info" /
b470: 3e 20 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  > structure..   
b480: 20 20 20 20 20 2f 2f 2f 20 2d 4f 52 2d 20 3c 73       /// -OR- <s
b490: 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e  ee cref="IntPtr.
b4a0: 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74 20 63  Zero" /> if it c
b4b0: 6f 75 6c 64 20 6e 6f 74 20 62 65 20 66 75 6c 6c  ould not be full
b4c0: 79 20 61 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20  y allocated...  
b4d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
b4e0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
b4f0: 69 76 61 74 65 20 73 74 61 74 69 63 20 49 6e 74  ivate static Int
b500: 50 74 72 20 41 6c 6c 6f 63 61 74 65 41 6e 64 49  Ptr AllocateAndI
b510: 6e 69 74 69 61 6c 69 7a 65 4e 61 74 69 76 65 28  nitializeNative(
b520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
b530: 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a  t nConstraint,..
b540: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
b550: 6e 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20  nOrderBy..      
b560: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
b570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b580: 49 6e 74 50 74 72 20 70 49 6e 64 65 78 20 3d 20  IntPtr pIndex = 
b590: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
b5a0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
b5b0: 20 70 49 6e 66 6f 20 3d 20 49 6e 74 50 74 72 2e   pInfo = IntPtr.
b5c0: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
b5d0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
b5e0: 72 61 69 6e 74 20 3d 20 49 6e 74 50 74 72 2e 5a  raint = IntPtr.Z
b5f0: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
b600: 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42    IntPtr pOrderB
b610: 79 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  y = IntPtr.Zero;
b620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
b630: 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69 6e 74  tPtr pConstraint
b640: 55 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a  Usage = IntPtr.Z
b650: 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
b660: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
b670: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b680: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65          int size
b690: 4f 66 49 6e 66 6f 54 79 70 65 3b 0d 0a 20 20 20  OfInfoType;..   
b6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
b6b0: 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79   sizeOfOrderByTy
b6c0: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
b6d0: 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
b6e0: 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 3b 0d 0a  onstraintType;..
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b700: 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72  int sizeOfConstr
b710: 61 69 6e 74 55 73 61 67 65 54 79 70 65 3b 0d 0a  aintUsageType;..
b720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b730: 20 20 53 69 7a 65 4f 66 4e 61 74 69 76 65 28 6f    SizeOfNative(o
b740: 75 74 20 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70  ut sizeOfInfoTyp
b750: 65 2c 20 6f 75 74 20 73 69 7a 65 4f 66 43 6f 6e  e, out sizeOfCon
b760: 73 74 72 61 69 6e 74 54 79 70 65 2c 0d 0a 20 20  straintType,..  
b770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b780: 20 20 6f 75 74 20 73 69 7a 65 4f 66 4f 72 64 65    out sizeOfOrde
b790: 72 42 79 54 79 70 65 2c 20 6f 75 74 20 73 69 7a  rByType, out siz
b7a0: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
b7b0: 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  geType);....    
b7c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b7d0: 28 73 69 7a 65 4f 66 49 6e 66 6f 54 79 70 65 20  (sizeOfInfoType 
b7e0: 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 69               (si
b800: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79  zeOfConstraintTy
b810: 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  pe > 0) &&..    
b820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b830: 28 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79  (sizeOfOrderByTy
b840: 70 65 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  pe > 0) &&..    
b850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b860: 28 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e  (sizeOfConstrain
b870: 74 55 73 61 67 65 54 79 70 65 20 3e 20 30 29 29  tUsageType > 0))
b880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b890: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b8a0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 20 3d           pInfo =
b8b0: 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
b8c0: 6c 6f 63 61 74 65 28 73 69 7a 65 4f 66 49 6e 66  locate(sizeOfInf
b8d0: 6f 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  oType);....     
b8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
b8f0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
b900: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
b910: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
b920: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
b930: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 54 79 70  eOfConstraintTyp
b940: 65 20 2a 20 6e 43 6f 6e 73 74 72 61 69 6e 74 29  e * nConstraint)
b950: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b960: 20 20 20 20 20 20 20 20 20 70 4f 72 64 65 72 42           pOrderB
b970: 79 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  y = SQLiteMemory
b980: 2e 41 6c 6c 6f 63 61 74 65 28 0d 0a 20 20 20 20  .Allocate(..    
b990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b9a0: 20 20 20 20 73 69 7a 65 4f 66 4f 72 64 65 72 42      sizeOfOrderB
b9b0: 79 54 79 70 65 20 2a 20 6e 4f 72 64 65 72 42 79  yType * nOrderBy
b9c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
b9d0: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
b9e0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
b9f0: 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61  iteMemory.Alloca
ba00: 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
ba10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a               siz
ba20: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
ba30: 67 65 54 79 70 65 20 2a 20 6e 43 6f 6e 73 74 72  geType * nConstr
ba40: 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  aint);....      
ba50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ba60: 20 28 28 70 49 6e 66 6f 20 21 3d 20 49 6e 74 50   ((pInfo != IntP
ba70: 74 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20  tr.Zero) &&..   
ba80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba90: 20 20 20 20 20 28 70 43 6f 6e 73 74 72 61 69 6e       (pConstrain
baa0: 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t != IntPtr.Zero
bab0: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
bac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
bad0: 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74  OrderBy != IntPt
bae0: 72 2e 5a 65 72 6f 29 20 26 26 0d 0a 20 20 20 20  r.Zero) &&..    
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb00: 20 20 20 20 28 70 43 6f 6e 73 74 72 61 69 6e 74      (pConstraint
bb10: 55 73 61 67 65 20 21 3d 20 49 6e 74 50 74 72 2e  Usage != IntPtr.
bb20: 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20  Zero))..        
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb50: 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
bb60: 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  t = 0;....      
bb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bb80: 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
bb90: 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20  WriteInt32(..   
bba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbb0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20           pInfo, 
bbc0: 6f 66 66 73 65 74 2c 20 6e 43 6f 6e 73 74 72 61  offset, nConstra
bbd0: 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
bbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bbf0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
bc00: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
bc10: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
bc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc30: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
bc40: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
bc50: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bc70: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
bc80: 72 69 74 65 49 6e 74 50 74 72 28 0d 0a 20 20 20  riteIntPtr(..   
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bca0: 20 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20           pInfo, 
bcb0: 6f 66 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61  offset, pConstra
bcc0: 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bce0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
bcf0: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
bd00: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74     offset, IntPt
bd30: 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69  r.Size, sizeof(i
bd40: 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt));....       
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57   SQLiteMarshal.W
bd70: 72 69 74 65 49 6e 74 33 32 28 0d 0a 20 20 20 20  riteInt32(..    
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd90: 20 20 20 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f          pInfo, o
bda0: 66 66 73 65 74 2c 20 6e 4f 72 64 65 72 42 79 29  ffset, nOrderBy)
bdb0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66               off
bdd0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
bde0: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
bdf0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
be10: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
be20: 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
be30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
be40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
be50: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
be60: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
be70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be80: 20 20 20 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73       pInfo, offs
be90: 65 74 2c 20 70 4f 72 64 65 72 42 79 29 3b 0d 0a  et, pOrderBy);..
bea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
beb0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
bec0: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
bed0: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
bf00: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
bf10: 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a   IntPtr.Size);..
bf20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf30: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
bf40: 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
bf50: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
bf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf70: 20 20 70 49 6e 66 6f 2c 20 6f 66 66 73 65 74 2c    pInfo, offset,
bf80: 20 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67   pConstraintUsag
bf90: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
bfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
bfb0: 49 6e 64 65 78 20 3d 20 70 49 6e 66 6f 3b 20 2f  Index = pInfo; /
bfc0: 2a 20 4e 4f 54 45 3a 20 53 75 63 63 65 73 73 2e  * NOTE: Success.
bfd0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
bfe0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c000: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c010: 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
c020: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
c030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c040: 20 20 69 66 20 28 70 49 6e 64 65 78 20 3d 3d 20    if (pIndex == 
c050: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 2f 2a 20  IntPtr.Zero) /* 
c060: 4e 4f 54 45 3a 20 46 61 69 6c 75 72 65 3f 20 2a  NOTE: Failure? *
c070: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
c080: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c090: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
c0a0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21  onstraintUsage !
c0b0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c0d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c0f0: 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65  QLiteMemory.Free
c100: 28 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  (pConstraintUsag
c110: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
c130: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20  nstraintUsage = 
c140: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c160: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
c170: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
c180: 4f 72 64 65 72 42 79 20 21 3d 20 49 6e 74 50 74  OrderBy != IntPt
c190: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
c1d0: 6d 6f 72 79 2e 46 72 65 65 28 70 4f 72 64 65 72  mory.Free(pOrder
c1e0: 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  By);..          
c1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4f                pO
c200: 72 64 65 72 42 79 20 3d 20 49 6e 74 50 74 72 2e  rderBy = IntPtr.
c210: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
c220: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c240: 20 20 20 20 69 66 20 28 70 43 6f 6e 73 74 72 61      if (pConstra
c250: 69 6e 74 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  int != IntPtr.Ze
c260: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
c270: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c290: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
c2a0: 2e 46 72 65 65 28 70 43 6f 6e 73 74 72 61 69 6e  .Free(pConstrain
c2b0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
c2d0: 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74 50 74  nstraint = IntPt
c2e0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c300: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c310: 20 20 20 20 20 20 69 66 20 28 70 49 6e 66 6f 20        if (pInfo 
c320: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c360: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
c370: 65 28 70 49 6e 66 6f 29 3b 0d 0a 20 20 20 20 20  e(pInfo);..     
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c390: 20 20 20 70 49 6e 66 6f 20 3d 20 49 6e 74 50 74     pInfo = IntPt
c3a0: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
c3e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c3f0: 72 65 74 75 72 6e 20 70 49 6e 64 65 78 3b 0d 0a  return pIndex;..
c400: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c410: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c460: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
c470: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
c480: 2f 2f 20 46 72 65 65 73 20 61 6c 6c 20 74 68 65  // Frees all the
c490: 20 6d 65 6d 6f 72 79 20 61 73 73 6f 63 69 61 74   memory associat
c4a0: 65 64 20 77 69 74 68 20 61 20 6e 61 74 69 76 65  ed with a native
c4b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
c4c0: 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e  ee cref="UnsafeN
c4d0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
c4e0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 22  ite3_index_info"
c4f0: 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   />..        ///
c500: 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
c510: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c520: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
c530: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
c540: 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
c550: 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
c560: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61  ointer to the na
c570: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64  tive sqlite3_ind
c580: 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72  ex_info structur
c590: 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e to..        //
c5a0: 2f 20 66 72 65 65 2e 0d 0a 20 20 20 20 20 20 20  / free...       
c5b0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c5c0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
c5d0: 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65 4e  tatic void FreeN
c5e0: 61 74 69 76 65 28 0d 0a 20 20 20 20 20 20 20 20  ative(..        
c5f0: 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65      IntPtr pInde
c600: 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
c610: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
c620: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e           if (pIn
c630: 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dex == IntPtr.Ze
c640: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
c650: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
c660: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
c670: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
c680: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
c690: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
c6a0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
c6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6c0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
c6d0: 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a  int), IntPtr.Siz
c6e0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
c6f0: 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74     IntPtr pConst
c700: 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d 61  raint = SQLiteMa
c710: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72  rshal.ReadIntPtr
c720: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c730: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
c740: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
c750: 20 20 20 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e     int constrain
c760: 74 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65 74  tOffset = offset
c770: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c780: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
c790: 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
c7a0: 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
c7b0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
c7c0: 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
c7d0: 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
c7e0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
c7f0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
c800: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
c820: 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e  ffset, sizeof(in
c830: 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  t), IntPtr.Size)
c840: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c850: 20 49 6e 74 50 74 72 20 70 4f 72 64 65 72 42 79   IntPtr pOrderBy
c860: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
c870: 2e 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20  .ReadIntPtr(..  
c880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49                pI
c890: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  ndex, offset);..
c8a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
c8b0: 74 20 6f 72 64 65 72 42 79 4f 66 66 73 65 74 20  t orderByOffset 
c8c0: 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20  = offset;....   
c8d0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20           offset 
c8e0: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
c8f0: 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20  NextOffsetOf(.. 
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
c910: 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69  ffset, IntPtr.Si
c920: 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  ze, IntPtr.Size)
c930: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c940: 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61   IntPtr pConstra
c950: 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c 69 74  intUsage = SQLit
c960: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  eMarshal.ReadInt
c970: 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Ptr(..          
c980: 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f 66        pIndex, of
c990: 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fset);....      
c9a0: 20 20 20 20 20 20 69 6e 74 20 63 6f 6e 73 74 72        int constr
c9b0: 61 69 6e 74 55 73 61 67 65 4f 66 66 73 65 74 20  aintUsageOffset 
c9c0: 3d 20 6f 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20  = offset;....   
c9d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
c9e0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 21 3d  nstraintUsage !=
c9f0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
ca00: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
ca20: 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
ca30: 70 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  pConstraintUsage
ca40: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ca50: 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e 74 55      pConstraintU
ca60: 73 61 67 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  sage = IntPtr.Ze
ca70: 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
ca80: 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
ca90: 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
caa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
cab0: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 63         pIndex, c
cac0: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 4f 66  onstraintUsageOf
cad0: 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e  fset, pConstrain
cae0: 74 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20  tUsage);..      
caf0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cb00: 20 20 20 20 20 20 20 69 66 20 28 70 4f 72 64 65         if (pOrde
cb10: 72 42 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  rBy != IntPtr.Ze
cb20: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
cb30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
cb40: 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
cb50: 2e 46 72 65 65 28 70 4f 72 64 65 72 42 79 29 3b  .Free(pOrderBy);
cb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cb70: 20 20 70 4f 72 64 65 72 42 79 20 3d 20 49 6e 74    pOrderBy = Int
cb80: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cba0: 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
cbb0: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
cbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e               pIn
cbd0: 64 65 78 2c 20 6f 72 64 65 72 42 79 4f 66 66 73  dex, orderByOffs
cbe0: 65 74 2c 20 70 4f 72 64 65 72 42 79 29 3b 0d 0a  et, pOrderBy);..
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cc00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
cc10: 28 70 43 6f 6e 73 74 72 61 69 6e 74 20 21 3d 20  (pConstraint != 
cc20: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
cc30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cc50: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
cc60: 43 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20 20  Constraint);..  
cc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
cc80: 6f 6e 73 74 72 61 69 6e 74 20 3d 20 49 6e 74 50  onstraint = IntP
cc90: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
ccb0: 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
ccc0: 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
cce0: 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 4f 66  ex, constraintOf
ccf0: 66 73 65 74 2c 20 70 43 6f 6e 73 74 72 61 69 6e  fset, pConstrain
cd00: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
cd10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
cd20: 20 20 69 66 20 28 70 49 6e 64 65 78 20 21 3d 20    if (pIndex != 
cd30: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
cd40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
cd60: 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70  iteMemory.Free(p
cd70: 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20  Index);..       
cd80: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 20           pIndex 
cd90: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
cdb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
cdc0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
cdd0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
cde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ce20: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
ce30: 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 61 72 73  on Internal Mars
ce40: 68 61 6c 20 48 65 6c 70 65 72 20 4d 65 74 68 6f  hal Helper Metho
ce50: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
ce60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ce70: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
ce80: 61 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  a native pointer
ce90: 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
cea0: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
ceb0: 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20  structure..     
cec0: 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61 20 6e 65     /// into a ne
ced0: 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  w <see cref="SQL
cee0: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
cef0: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
cf00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
cf10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
cf20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
cf30: 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  pIndex">..      
cf40: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
cf50: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
cf60: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
cf70: 6e 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74  ndex_info struct
cf80: 75 72 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ure to..        
cf90: 2f 2f 2f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20  /// convert...  
cfa0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
cfb0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
cfc0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 63  <param name="inc
cfd0: 6c 75 64 65 4f 75 74 70 75 74 22 3e 0d 0a 20 20  ludeOutput">..  
cfe0: 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
cff0: 72 6f 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 69  ro to include fi
d000: 65 6c 64 73 20 66 72 6f 6d 20 74 68 65 20 6f 75  elds from the ou
d010: 74 70 75 74 73 20 70 6f 72 74 69 6f 6e 20 6f 66  tputs portion of
d020: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
d030: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
d040: 72 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  re; otherwise, t
d050: 68 65 20 22 6f 75 74 70 75 74 22 20 66 69 65 6c  he "output" fiel
d060: 64 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 72  ds will not be r
d070: 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ead...        //
d080: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d090: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d0a0: 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
d0b0: 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
d0c0: 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72  uccess, this par
d0d0: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d  ameter will be m
d0e0: 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61  odified to conta
d0f0: 69 6e 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20  in the newly..  
d100: 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65        /// create
d110: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  d <see cref="SQL
d120: 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a  iteIndex" /> obj
d130: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
d140: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
d150: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  am>..        int
d160: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
d170: 64 20 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20  d FromIntPtr(.. 
d180: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
d190: 72 20 70 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20  r pIndex,..     
d1a0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 6e 63 6c         bool incl
d1b0: 75 64 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20  udeOutput,..    
d1c0: 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69          ref SQLi
d1d0: 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20  teIndex index.. 
d1e0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
d1f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d200: 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78 20       if (pIndex 
d210: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
d220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d230: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
d240: 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
d250: 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  et = 0;....     
d260: 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e 73         int nCons
d270: 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d  traint = SQLiteM
d280: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32  arshal.ReadInt32
d290: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d2a0: 20 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65     pIndex, offse
d2b0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d2c0: 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
d2d0: 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
d2e0: 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
d2f0: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
d300: 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e   sizeof(int), In
d310: 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20  tPtr.Size);.... 
d320: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
d330: 72 20 70 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  r pConstraint = 
d340: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65  SQLiteMarshal.Re
d350: 61 64 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  adIntPtr(..     
d360: 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65             pInde
d370: 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20  x, offset);.... 
d380: 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65             offse
d390: 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  t = SQLiteMarsha
d3a0: 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d  l.NextOffsetOf(.
d3b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d3c0: 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72 2e   offset, IntPtr.
d3d0: 53 69 7a 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74  Size, sizeof(int
d3e0: 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
d3f0: 20 20 20 69 6e 74 20 6e 4f 72 64 65 72 42 79 20     int nOrderBy 
d400: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d410: 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20  ReadInt32(..    
d420: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
d430: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
d440: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
d450: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
d460: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
d470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d480: 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66    offset, sizeof
d490: 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69  (int), IntPtr.Si
d4a0: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
d4b0: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65      IntPtr pOrde
d4c0: 72 42 79 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  rBy = SQLiteMars
d4d0: 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 0d  hal.ReadIntPtr(.
d4e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d4f0: 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29   pIndex, offset)
d500: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d510: 20 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61   IntPtr pConstra
d520: 69 6e 74 55 73 61 67 65 20 3d 20 49 6e 74 50 74  intUsage = IntPt
d530: 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
d540: 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75         if (inclu
d550: 64 65 4f 75 74 70 75 74 29 0d 0a 20 20 20 20 20  deOutput)..     
d560: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d570: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
d580: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
d590: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5b0: 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50      offset, IntP
d5c0: 74 72 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e  tr.Size, IntPtr.
d5d0: 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Size);....      
d5e0: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
d5f0: 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51 4c  raintUsage = SQL
d600: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
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 6f 66 66 73 65 74 29 3b 0d 0a 20 20  ex, offset);..  
d640: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
d650: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
d660: 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64   = new SQLiteInd
d670: 65 78 28 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20  ex(nConstraint, 
d680: 6e 4f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20  nOrderBy);..    
d690: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e          SQLiteIn
d6a0: 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75 74 73  dexInputs inputs
d6b0: 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 3b   = index.Inputs;
d6c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d6d0: 69 66 20 28 69 6e 70 75 74 73 20 3d 3d 20 6e 75  if (inputs == nu
d6e0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
d6f0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
d700: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d710: 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
d720: 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  t[] constraints 
d730: 3d 20 69 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61  = inputs.Constra
d740: 69 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ints;....       
d750: 20 20 20 20 20 69 66 20 28 63 6f 6e 73 74 72 61       if (constra
d760: 69 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ints == null).. 
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
d780: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
d790: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
d7a0: 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65 72  xOrderBy[] order
d7b0: 42 79 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64  Bys = inputs.Ord
d7c0: 65 72 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  erBys;....      
d7d0: 20 20 20 20 20 20 69 66 20 28 6f 72 64 65 72 42        if (orderB
d7e0: 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ys == null)..   
d7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d800: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
d810: 20 20 20 20 54 79 70 65 20 63 6f 6e 73 74 72 61      Type constra
d820: 69 6e 74 54 79 70 65 20 3d 20 74 79 70 65 6f 66  intType = typeof
d830: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d840: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
d850: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
d860: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29  ndex_constraint)
d870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d880: 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f 6e 73 74   int sizeOfConst
d890: 72 61 69 6e 74 54 79 70 65 20 3d 20 4d 61 72 73  raintType = Mars
d8a0: 68 61 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20  hal.SizeOf(..   
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
d8c0: 73 74 72 61 69 6e 74 54 79 70 65 29 3b 0d 0a 0d  straintType);...
d8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
d8e0: 20 28 69 6e 74 20 69 43 6f 6e 73 74 72 61 69 6e   (int iConstrain
d8f0: 74 20 3d 20 30 3b 20 69 43 6f 6e 73 74 72 61 69  t = 0; iConstrai
d900: 6e 74 20 3c 20 6e 43 6f 6e 73 74 72 61 69 6e 74  nt < nConstraint
d910: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 2b 2b 29  ; iConstraint++)
d920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d940: 20 49 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20   IntPtr pOffset 
d950: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
d960: 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28  IntPtrForOffset(
d970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d980: 20 20 20 20 20 20 70 43 6f 6e 73 74 72 61 69 6e        pConstrain
d990: 74 2c 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 2a  t, iConstraint *
d9a0: 20 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e   sizeOfConstrain
d9b0: 74 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  tType);....     
d9c0: 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
d9d0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
d9e0: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
d9f0: 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
da00: 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  nt =..          
da10: 20 20 20 20 20 20 20 20 20 20 28 55 6e 73 61 66            (Unsaf
da20: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
da30: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
da40: 73 74 72 61 69 6e 74 29 0d 0a 20 20 20 20 20 20  straint)..      
da50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da60: 20 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53    Marshal.PtrToS
da70: 74 72 75 63 74 75 72 65 28 70 4f 66 66 73 65 74  tructure(pOffset
da80: 2c 20 63 6f 6e 73 74 72 61 69 6e 74 54 79 70 65  , constraintType
da90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
daa0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
dab0: 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d  s[iConstraint] =
dac0: 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78   new SQLiteIndex
dad0: 43 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  Constraint(..   
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daf0: 20 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 20   constraint);.. 
db00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
db10: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
db20: 20 6f 72 64 65 72 42 79 54 79 70 65 20 3d 20 74   orderByType = t
db30: 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
db40: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
db50: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
db60: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
db70: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
db80: 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64     int sizeOfOrd
db90: 65 72 42 79 54 79 70 65 20 3d 20 4d 61 72 73 68  erByType = Marsh
dba0: 61 6c 2e 53 69 7a 65 4f 66 28 6f 72 64 65 72 42  al.SizeOf(orderB
dbb0: 79 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  yType);....     
dbc0: 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
dbd0: 69 4f 72 64 65 72 42 79 20 3d 20 30 3b 20 69 4f  iOrderBy = 0; iO
dbe0: 72 64 65 72 42 79 20 3c 20 6e 4f 72 64 65 72 42  rderBy < nOrderB
dbf0: 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29 0d 0a  y; iOrderBy++)..
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
dc20: 6e 74 50 74 72 20 70 4f 66 66 73 65 74 20 3d 20  ntPtr pOffset = 
dc30: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49 6e  SQLiteMarshal.In
dc40: 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a  tPtrForOffset(..
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 20 20 70 4f 72 64 65 72 42 79 2c 20 69 4f      pOrderBy, iO
dc70: 72 64 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f  rderBy * sizeOfO
dc80: 72 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a  rderByType);....
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dca0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
dcb0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
dcc0: 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72 42  x_orderby orderB
dcd0: 79 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y =..           
dce0: 20 20 20 20 20 20 20 20 20 28 55 6e 73 61 66 65           (Unsafe
dcf0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
dd00: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
dd10: 72 62 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rby)..          
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
dd30: 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72 75 63  rshal.PtrToStruc
dd40: 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20 6f 72  ture(pOffset, or
dd50: 64 65 72 42 79 54 79 70 65 29 3b 0d 0a 0d 0a 20  derByType);.... 
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
dd70: 72 64 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79  rderBys[iOrderBy
dd80: 5d 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  ] = new SQLiteIn
dd90: 64 65 78 4f 72 64 65 72 42 79 28 6f 72 64 65 72  dexOrderBy(order
dda0: 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  By);..          
ddb0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ddc0: 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 4f 75     if (includeOu
ddd0: 74 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20  tput)..         
dde0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ddf0: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
de00: 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74 73  xOutputs outputs
de10: 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73   = index.Outputs
de20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
de30: 20 20 20 20 20 69 66 20 28 6f 75 74 70 75 74 73       if (outputs
de40: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
de50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
de60: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
de70: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
de80: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
de90: 73 61 67 65 5b 5d 20 63 6f 6e 73 74 72 61 69 6e  sage[] constrain
dea0: 74 55 73 61 67 65 73 20 3d 0d 0a 20 20 20 20 20  tUsages =..     
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
dec0: 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e  utputs.Constrain
ded0: 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20 20 20  tUsages;....    
dee0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
def0: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 73  constraintUsages
df00: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
df20: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
df30: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 63            Type c
df40: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
df50: 70 65 20 3d 20 74 79 70 65 6f 66 28 0d 0a 20 20  pe = typeof(..  
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df70: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
df80: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
df90: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75  dex_constraint_u
dfa0: 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sage);....      
dfb0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
dfc0: 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73  zeOfConstraintUs
dfd0: 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61  ageType = Marsha
dfe0: 6c 2e 53 69 7a 65 4f 66 28 0d 0a 20 20 20 20 20  l.SizeOf(..     
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
e000: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54 79  onstraintUsageTy
e010: 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pe);....        
e020: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
e030: 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30   iConstraint = 0
e040: 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20  ; iConstraint < 
e050: 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f  nConstraint; iCo
e060: 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20  nstraint++)..   
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e090: 20 20 20 20 49 6e 74 50 74 72 20 70 4f 66 66 73      IntPtr pOffs
e0a0: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
e0b0: 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  al.IntPtrForOffs
e0c0: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
e0e0: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 2c 20 69  nstraintUsage, i
e0f0: 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a  Constraint * siz
e100: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
e110: 67 65 54 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20  geType);....    
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e130: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
e140: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
e150: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
e160: 67 65 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61  ge constraintUsa
e170: 67 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ge =..          
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 55                (U
e190: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
e1a0: 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  ds.sqlite3_index
e1b0: 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67  _constraint_usag
e1c0: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1e0: 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72  Marshal.PtrToStr
e1f0: 75 63 74 75 72 65 28 70 4f 66 66 73 65 74 2c 20  ucture(pOffset, 
e200: 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  constraintUsageT
e210: 79 70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ype);....       
e220: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
e230: 73 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43  straintUsages[iC
e240: 6f 6e 73 74 72 61 69 6e 74 5d 20 3d 20 6e 65 77  onstraint] = new
e250: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
e260: 74 72 61 69 6e 74 55 73 61 67 65 28 0d 0a 20 20  traintUsage(..  
e270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e280: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
e290: 55 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20  Usage);..       
e2a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e2c0: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e2d0: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
e2e0: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e2f0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
e300: 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a  IntPtr.Size, siz
e310: 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20  eof(int));....  
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75                ou
e330: 74 70 75 74 73 2e 49 6e 64 65 78 4e 75 6d 62 65  tputs.IndexNumbe
e340: 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61  r = SQLiteMarsha
e350: 6c 2e 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20  l.ReadInt32(..  
e360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e370: 20 20 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74    pIndex, offset
e380: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e390: 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
e3a0: 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
e3b0: 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
e3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3d0: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
e3e0: 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
e3f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e400: 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49 6e        outputs.In
e410: 64 65 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69  dexString = SQLi
e420: 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46  teString.StringF
e430: 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a  romUtf8IntPtr(..
e440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e450: 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61      SQLiteMarsha
e460: 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e  l.ReadIntPtr(pIn
e470: 64 65 78 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  dex, offset));..
e480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e490: 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
e4a0: 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
e4b0: 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
e4c0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
e4d0: 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c  et, IntPtr.Size,
e4e0: 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   sizeof(int));..
e4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e500: 20 20 6f 75 74 70 75 74 73 2e 4e 65 65 64 54 6f    outputs.NeedTo
e510: 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20  FreeIndexString 
e520: 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e  = SQLiteMarshal.
e530: 52 65 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20  ReadInt32(..    
e540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e550: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
e560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e570: 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
e580: 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
e590: 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e5b0: 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
e5c0: 29 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  ), sizeof(int));
e5d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e5e0: 20 20 20 20 6f 75 74 70 75 74 73 2e 4f 72 64 65      outputs.Orde
e5f0: 72 42 79 43 6f 6e 73 75 6d 65 64 20 3d 20 53 51  rByConsumed = SQ
e600: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
e610: 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20  Int32(..        
e620: 20 20 20 20 20 20 20 20 20 20 20 20 70 49 6e 64              pInd
e630: 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
e640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e650: 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
e660: 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
e670: 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
e680: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
e690: 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73  , sizeof(int), s
e6a0: 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0d  izeof(double));.
e6b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e6c0: 20 20 20 6f 75 74 70 75 74 73 2e 45 73 74 69 6d     outputs.Estim
e6d0: 61 74 65 64 43 6f 73 74 20 3d 20 53 51 4c 69 74  atedCost = SQLit
e6e0: 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 44 6f 75  eMarshal.ReadDou
e6f0: 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ble(..          
e700: 20 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78            pIndex
e710: 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
e720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e730: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e740: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
e750: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e760: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
e770: 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20  sizeof(double), 
e780: 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a  sizeof(long));..
e790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e7a0: 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
e7b0: 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77  nUseEstimatedRow
e7c0: 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s())..          
e7d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
e7f0: 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 52 6f  puts.EstimatedRo
e800: 77 73 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  ws = SQLiteMarsh
e810: 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a 20  al.ReadInt64(.. 
e820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e830: 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20 6f         pIndex, o
e840: 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20 20 20  ffset);..       
e850: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
e870: 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
e880: 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
e890: 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
e8a0: 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
e8b0: 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69  sizeof(long), si
e8c0: 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
e8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
e8e0: 66 20 28 6f 75 74 70 75 74 73 2e 43 61 6e 55 73  f (outputs.CanUs
e8f0: 65 49 6e 64 65 78 46 6c 61 67 73 28 29 29 0d 0a  eIndexFlags())..
e900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e910: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e920: 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 49         outputs.I
e930: 6e 64 65 78 46 6c 61 67 73 20 3d 20 28 53 51 4c  ndexFlags = (SQL
e940: 69 74 65 49 6e 64 65 78 46 6c 61 67 73 29 0d 0a  iteIndexFlags)..
e950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e960: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
e970: 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28  rshal.ReadInt32(
e980: 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
e990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e9a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
e9b0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20         offset = 
e9c0: 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65  SQLiteMarshal.Ne
e9d0: 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20  xtOffsetOf(..   
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9f0: 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28   offset, sizeof(
ea00: 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e  int), sizeof(lon
ea10: 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g));....        
ea20: 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74 70          if (outp
ea30: 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c 75 6d 6e  uts.CanUseColumn
ea40: 73 55 73 65 64 28 29 29 0d 0a 20 20 20 20 20 20  sUsed())..      
ea50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea70: 20 6f 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73   outputs.Columns
ea80: 55 73 65 64 20 3d 20 53 51 4c 69 74 65 4d 61 72  Used = SQLiteMar
ea90: 73 68 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d  shal.ReadInt64(.
eaa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eab0: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
eac0: 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
ead0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
eae0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
eaf0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
eb00: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
eb50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
eb60: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
eb70: 50 6f 70 75 6c 61 74 65 73 20 74 68 65 20 6f 75  Populates the ou
eb80: 74 70 75 74 73 20 6f 66 20 61 20 70 72 65 2d 61  tputs of a pre-a
eb90: 6c 6c 6f 63 61 74 65 64 20 6e 61 74 69 76 65 20  llocated native 
eba0: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e  sqlite3_index_in
ebb0: 66 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  fo..        /// 
ebc0: 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
ebd0: 61 6e 20 65 78 69 73 74 69 6e 67 20 3c 73 65 65  an existing <see
ebe0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
ebf0: 65 78 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  ex" /> object.. 
ec00: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
ec10: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
ec20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ec30: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
ec40: 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
ec50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
ec60: 65 78 69 73 74 69 6e 67 20 3c 73 65 65 20 63 72  existing <see cr
ec70: 65 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 22  ef="SQLiteIndex"
ec80: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
ec90: 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a  nce containing..
eca0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
ecb0: 6f 75 74 70 75 74 20 64 61 74 61 20 74 6f 20 75  output data to u
ecc0: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
ecd0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
ece0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ecf0: 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20  me="pIndex">..  
ed00: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
ed10: 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
ed20: 74 68 65 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  the pre-allocate
ed30: 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  d native sqlite3
ed40: 5f 69 6e 64 65 78 5f 69 6e 66 6f 0d 0a 20 20 20  _index_info..   
ed50: 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75       /// structu
ed60: 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
ed70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
ed80: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ed90: 6d 65 3d 22 69 6e 63 6c 75 64 65 49 6e 70 75 74  me="includeInput
eda0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
edb0: 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 69 6e 63 6c  Non-zero to incl
edc0: 75 64 65 20 66 69 65 6c 64 73 20 66 72 6f 6d 20  ude fields from 
edd0: 74 68 65 20 69 6e 70 75 74 73 20 70 6f 72 74 69  the inputs porti
ede0: 6f 6e 20 6f 66 20 74 68 65 20 6e 61 74 69 76 65  on of the native
edf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
ee00: 72 75 63 74 75 72 65 3b 20 6f 74 68 65 72 77 69  ructure; otherwi
ee10: 73 65 2c 20 74 68 65 20 22 69 6e 70 75 74 22 20  se, the "input" 
ee20: 66 69 65 6c 64 73 20 77 69 6c 6c 20 6e 6f 74 20  fields will not 
ee30: 62 65 20 77 72 69 74 74 65 6e 2e 0d 0a 20 20 20  be written...   
ee40: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
ee50: 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  >..        inter
ee60: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
ee70: 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
ee80: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
ee90: 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20  ex index,..     
eea0: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49         IntPtr pI
eeb0: 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  ndex,..         
eec0: 20 20 20 62 6f 6f 6c 20 69 6e 63 6c 75 64 65 49     bool includeI
eed0: 6e 70 75 74 0d 0a 20 20 20 20 20 20 20 20 20 20  nput..          
eee0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
ef00: 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  index == null)..
ef10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef20: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
ef30: 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
ef40: 65 78 4f 75 74 70 75 74 73 20 6f 75 74 70 75 74  exOutputs output
ef50: 73 20 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75 74  s = index.Output
ef60: 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
ef70: 20 20 69 66 20 28 6f 75 74 70 75 74 73 20 3d 3d    if (outputs ==
ef80: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ef90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
efa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
efb0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
efc0: 61 69 6e 74 55 73 61 67 65 5b 5d 20 63 6f 6e 73  aintUsage[] cons
efd0: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 0d 0a  traintUsages =..
efe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eff0: 6f 75 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69  outputs.Constrai
f000: 6e 74 55 73 61 67 65 73 3b 0d 0a 0d 0a 20 20 20  ntUsages;....   
f010: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
f020: 73 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 3d  straintUsages ==
f030: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f040: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
f050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
f060: 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
f070: 20 69 6e 70 75 74 73 20 3d 20 6e 75 6c 6c 3b 0d   inputs = null;.
f080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
f090: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
f0a0: 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74 73  nt[] constraints
f0b0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
f0c0: 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65        SQLiteInde
f0d0: 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72 64 65 72  xOrderBy[] order
f0e0: 42 79 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  Bys = null;.... 
f0f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
f100: 6e 63 6c 75 64 65 49 6e 70 75 74 29 0d 0a 20 20  ncludeInput)..  
f110: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70               inp
f130: 75 74 73 20 3d 20 69 6e 64 65 78 2e 49 6e 70 75  uts = index.Inpu
f140: 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ts;....         
f150: 20 20 20 20 20 20 20 69 66 20 28 69 6e 70 75 74         if (input
f160: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
f170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f180: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
f190: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
f1a0: 72 61 69 6e 74 73 20 3d 20 69 6e 70 75 74 73 2e  raints = inputs.
f1b0: 43 6f 6e 73 74 72 61 69 6e 74 73 3b 0d 0a 0d 0a  Constraints;....
f1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1d0: 69 66 20 28 63 6f 6e 73 74 72 61 69 6e 74 73 20  if (constraints 
f1e0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f200: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
f210: 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79           orderBy
f220: 73 20 3d 20 69 6e 70 75 74 73 2e 4f 72 64 65 72  s = inputs.Order
f230: 42 79 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  Bys;....        
f240: 20 20 20 20 20 20 20 20 69 66 20 28 6f 72 64 65          if (orde
f250: 72 42 79 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rBys == null).. 
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f270: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20     return;..    
f280: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f290: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 49 6e           if (pIn
f2a0: 64 65 78 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  dex == IntPtr.Ze
f2b0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
f2c0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
f2e0: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
f2f0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
f300: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 53 51 4c  Constraint = SQL
f310: 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  iteMarshal.ReadI
f320: 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
f330: 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
f340: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
f350: 49 6e 70 75 74 20 26 26 20 28 6e 43 6f 6e 73 74  Input && (nConst
f360: 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74 72 61  raint != constra
f370: 69 6e 74 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20  ints.Length)).. 
f380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
f390: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
f3a0: 20 20 20 20 20 20 69 66 20 28 6e 43 6f 6e 73 74        if (nConst
f3b0: 72 61 69 6e 74 20 21 3d 20 63 6f 6e 73 74 72 61  raint != constra
f3c0: 69 6e 74 55 73 61 67 65 73 2e 4c 65 6e 67 74 68  intUsages.Length
f3d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
f3e0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
f3f0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
f400: 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c   = SQLiteMarshal
f410: 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a  .NextOffsetOf(..
f420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f430: 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69  offset, sizeof(i
f440: 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65  nt), IntPtr.Size
f450: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f460: 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70    if (includeInp
f470: 75 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ut)..           
f480: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f490: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
f4a0: 74 72 61 69 6e 74 20 3d 20 53 51 4c 69 74 65 4d  traint = SQLiteM
f4b0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
f4c0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
f4d0: 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c 20          pIndex, 
f4e0: 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
f500: 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
f510: 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  Type = Marshal.S
f520: 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
f530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f540: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
f550: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
f560: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 29  ndex_constraint)
f570: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f580: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
f590: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
f5a0: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
f5b0: 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
f5c0: 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
f5d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5f0: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
f600: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e  thods.sqlite3_in
f610: 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20 63  dex_constraint c
f620: 6f 6e 73 74 72 61 69 6e 74 20 3d 0d 0a 20 20 20  onstraint =..   
f630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f640: 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e       new UnsafeN
f650: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
f660: 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74  ite3_index_const
f670: 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20  raint(..        
f680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f690: 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 73 5b      constraints[
f6a0: 69 43 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a  iConstraint]);..
f6b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f6c0: 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53 74        Marshal.St
f6d0: 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a 20  ructureToPtr(.. 
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6f0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
f700: 74 2c 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  t, SQLiteMarshal
f710: 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74  .IntPtrForOffset
f720: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f730: 20 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73             pCons
f740: 74 72 61 69 6e 74 2c 20 69 43 6f 6e 73 74 72 61  traint, iConstra
f750: 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e 73  int * sizeOfCons
f760: 74 72 61 69 6e 74 54 79 70 65 29 2c 0d 0a 20 20  traintType),..  
f770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f780: 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20        false);.. 
f790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f7b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
f7c0: 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61  ffset = SQLiteMa
f7d0: 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74  rshal.NextOffset
f7e0: 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
f7f0: 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e 74       offset, Int
f800: 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f 66  Ptr.Size, sizeof
f810: 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  (int));....     
f820: 20 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65         int nOrde
f830: 72 42 79 20 3d 20 69 6e 63 6c 75 64 65 49 6e 70  rBy = includeInp
f840: 75 74 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  ut ?..          
f850: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73        SQLiteMars
f860: 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 49  hal.ReadInt32(pI
f870: 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 20 3a 20  ndex, offset) : 
f880: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
f890: 20 20 69 66 20 28 69 6e 63 6c 75 64 65 49 6e 70    if (includeInp
f8a0: 75 74 20 26 26 20 28 6e 4f 72 64 65 72 42 79 20  ut && (nOrderBy 
f8b0: 21 3d 20 6f 72 64 65 72 42 79 73 2e 4c 65 6e 67  != orderBys.Leng
f8c0: 74 68 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  th))..          
f8d0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
f8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66  .            off
f8f0: 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  set = SQLiteMars
f900: 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66  hal.NextOffsetOf
f910: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f920: 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65 6f     offset, sizeo
f930: 66 28 69 6e 74 29 2c 20 49 6e 74 50 74 72 2e 53  f(int), IntPtr.S
f940: 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ize);....       
f950: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65       if (include
f960: 49 6e 70 75 74 29 0d 0a 20 20 20 20 20 20 20 20  Input)..        
f970: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f980: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4f         IntPtr pO
f990: 72 64 65 72 42 79 20 3d 20 53 51 4c 69 74 65 4d  rderBy = SQLiteM
f9a0: 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74  arshal.ReadIntPt
f9b0: 72 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  r(pIndex, offset
f9c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f9d0: 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66        int sizeOf
f9e0: 4f 72 64 65 72 42 79 54 79 70 65 20 3d 20 4d 61  OrderByType = Ma
f9f0: 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70  rshal.SizeOf(typ
fa00: 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eof(..          
fa10: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
fa20: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
fa30: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
fa40: 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rby));....      
fa50: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
fa60: 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b  nt iOrderBy = 0;
fa70: 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64   iOrderBy < nOrd
fa80: 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b  erBy; iOrderBy++
fa90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
faa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
fab0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
fac0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
fad0: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65  lite3_index_orde
fae0: 72 62 79 20 6f 72 64 65 72 42 79 20 3d 0d 0a 20  rby orderBy =.. 
faf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb00: 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
fb10: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
fb20: 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64  qlite3_index_ord
fb30: 65 72 62 79 28 0d 0a 20 20 20 20 20 20 20 20 20  erby(..         
fb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fb50: 20 20 20 6f 72 64 65 72 42 79 73 5b 69 4f 72 64     orderBys[iOrd
fb60: 65 72 42 79 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20  erBy]);....     
fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
fb80: 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72 65  arshal.Structure
fb90: 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ToPtr(..        
fba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbb0: 6f 72 64 65 72 42 79 2c 20 53 51 4c 69 74 65 4d  orderBy, SQLiteM
fbc0: 61 72 73 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72  arshal.IntPtrFor
fbd0: 4f 66 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20  Offset(..       
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbf0: 20 70 4f 72 64 65 72 42 79 2c 20 69 4f 72 64 65   pOrderBy, iOrde
fc00: 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72 64 65  rBy * sizeOfOrde
fc10: 72 42 79 54 79 70 65 29 2c 0d 0a 20 20 20 20 20  rByType),..     
fc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc30: 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20     false);..    
fc40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
fc50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
fc60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
fc70: 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
fc80: 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fca0: 20 20 6f 66 66 73 65 74 2c 20 49 6e 74 50 74 72    offset, IntPtr
fcb0: 2e 53 69 7a 65 2c 20 49 6e 74 50 74 72 2e 53 69  .Size, IntPtr.Si
fcc0: 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ze);....        
fcd0: 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 73      IntPtr pCons
fce0: 74 72 61 69 6e 74 55 73 61 67 65 20 3d 20 53 51  traintUsage = SQ
fcf0: 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61 64  LiteMarshal.Read
fd00: 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
fd10: 20 20 20 20 20 20 20 20 20 70 49 6e 64 65 78 2c           pIndex,
fd20: 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20   offset);....   
fd30: 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
fd40: 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
fd50: 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
fd60: 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
fd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fd80: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
fd90: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
fda0: 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
fdb0: 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  age));....      
fdc0: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
fdd0: 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
fde0: 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
fdf0: 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
fe00: 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
fe10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
fe20: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
fe30: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
fe40: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
fe50: 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e  traint_usage con
fe60: 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a  straintUsage =..
fe70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe80: 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61      new UnsafeNa
fe90: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
fea0: 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
feb0: 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a 20 20 20  aint_usage(..   
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fed0: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
fee0: 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69 6e  sages[iConstrain
fef0: 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t]);....        
ff00: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
ff10: 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d  StructureToPtr(.
ff20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ff30: 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74 55       constraintU
ff40: 73 61 67 65 2c 20 53 51 4c 69 74 65 4d 61 72 73  sage, SQLiteMars
ff50: 68 61 6c 2e 49 6e 74 50 74 72 46 6f 72 4f 66 66  hal.IntPtrForOff
ff60: 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  set(..          
ff70: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 73 74            pConst
ff80: 72 61 69 6e 74 55 73 61 67 65 2c 20 69 43 6f 6e  raintUsage, iCon
ff90: 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66  straint * sizeOf
ffa0: 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 54  ConstraintUsageT
ffb0: 79 70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ype),..         
ffc0: 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
ffd0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ffe0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
fff0: 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
10000 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
10010 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
10020 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
10030 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
10040 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
10050 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
10060 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
10070 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
10080 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
10090 20 20 20 6f 75 74 70 75 74 73 2e 49 6e 64 65 78     outputs.Index
100a0 4e 75 6d 62 65 72 29 3b 0d 0a 0d 0a 20 20 20 20  Number);....    
100b0 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d          offset =
100c0 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e   SQLiteMarshal.N
100d0 65 78 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20  extOffsetOf(..  
100e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
100f0 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
10100 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
10110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10120 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72  SQLiteMarshal.Wr
10130 69 74 65 49 6e 74 50 74 72 28 70 49 6e 64 65 78  iteIntPtr(pIndex
10140 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20 20  , offset,..     
10150 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10160 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
10170 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6f 75 74  trFromString(out
10180 70 75 74 73 2e 49 6e 64 65 78 53 74 72 69 6e 67  puts.IndexString
10190 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ));....         
101a0 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
101b0 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
101c0 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
101d0 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
101e0 20 49 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69   IntPtr.Size, si
101f0 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
10200 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
10210 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
10220 54 45 3a 20 57 65 20 6a 75 73 74 20 61 6c 6c 6f  TE: We just allo
10230 63 61 74 65 64 20 74 68 65 20 49 6e 64 65 78 53  cated the IndexS
10240 74 72 69 6e 67 20 66 69 65 6c 64 3b 20 74 68 65  tring field; the
10250 72 65 66 6f 72 65 2c 20 77 65 0d 0a 20 20 20 20  refore, we..    
10260 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
10270 20 6e 65 65 64 20 74 6f 20 73 65 74 20 6d 61 6b   need to set mak
10280 65 20 73 75 72 65 20 74 68 65 20 4e 65 65 64 54  e sure the NeedT
10290 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e 67  oFreeIndexString
102a0 20 66 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20   field..        
102b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
102c0 6e 6f 6e 2d 7a 65 72 6f 3b 20 68 6f 77 65 76 65  non-zero; howeve
102d0 72 2c 20 77 65 20 61 72 65 20 6e 6f 74 20 70 69  r, we are not pi
102e0 63 6b 79 20 61 62 6f 75 74 20 74 68 65 20 65 78  cky about the ex
102f0 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  act..           
10300 20 2f 2f 20 20 20 20 20 20 20 76 61 6c 75 65 2e   //       value.
10310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
10320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
10330 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  t needToFreeInde
10340 78 53 74 72 69 6e 67 20 3d 20 6f 75 74 70 75 74  xString = output
10350 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  s.NeedToFreeInde
10360 78 53 74 72 69 6e 67 20 21 3d 20 30 20 3f 0d 0a  xString != 0 ?..
10370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10380 6f 75 74 70 75 74 73 2e 4e 65 65 64 54 6f 46 72  outputs.NeedToFr
10390 65 65 49 6e 64 65 78 53 74 72 69 6e 67 20 3a 20  eeIndexString : 
103a0 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  1;....          
103b0 20 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e    SQLiteMarshal.
103c0 57 72 69 74 65 49 6e 74 33 32 28 70 49 6e 64 65  WriteInt32(pInde
103d0 78 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  x, offset,..    
103e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64              need
103f0 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69 6e  ToFreeIndexStrin
10400 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  g);....         
10410 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69     offset = SQLi
10420 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66  teMarshal.NextOf
10430 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20  fsetOf(..       
10440 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c           offset,
10450 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69   sizeof(int), si
10460 7a 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20  zeof(int));.... 
10470 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
10480 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
10490 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
104a0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
104b0 20 20 20 20 20 6f 75 74 70 75 74 73 2e 4f 72 64       outputs.Ord
104c0 65 72 42 79 43 6f 6e 73 75 6d 65 64 29 3b 0d 0a  erByConsumed);..
104d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
104e0 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72  fset = SQLiteMar
104f0 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f  shal.NextOffsetO
10500 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
10510 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69 7a 65      offset, size
10520 6f 66 28 69 6e 74 29 2c 20 73 69 7a 65 6f 66 28  of(int), sizeof(
10530 64 6f 75 62 6c 65 29 29 3b 0d 0a 0d 0a 20 20 20  double));....   
10540 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74           if (out
10550 70 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f  puts.EstimatedCo
10560 73 74 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20  st.HasValue)..  
10570 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
10590 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
105a0 44 6f 75 62 6c 65 28 70 49 6e 64 65 78 2c 20 6f  Double(pIndex, o
105b0 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
105c0 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
105d0 75 74 73 2e 45 73 74 69 6d 61 74 65 64 43 6f 73  uts.EstimatedCos
105e0 74 2e 47 65 74 56 61 6c 75 65 4f 72 44 65 66 61  t.GetValueOrDefa
105f0 75 6c 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ult());..       
10600 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10610 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53        offset = S
10620 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78  QLiteMarshal.Nex
10630 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
10640 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
10650 65 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c  et, sizeof(doubl
10660 65 29 2c 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29  e), sizeof(long)
10670 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10680 20 20 69 66 20 28 6f 75 74 70 75 74 73 2e 43 61    if (outputs.Ca
10690 6e 55 73 65 45 73 74 69 6d 61 74 65 64 52 6f 77  nUseEstimatedRow
106a0 73 28 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  s() &&..        
106b0 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e          outputs.
106c0 45 73 74 69 6d 61 74 65 64 52 6f 77 73 2e 48 61  EstimatedRows.Ha
106d0 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20  sValue)..       
106e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
106f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
10700 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34  rshal.WriteInt64
10710 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 2c  (pIndex, offset,
10720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10730 20 20 20 20 20 20 6f 75 74 70 75 74 73 2e 45 73        outputs.Es
10740 74 69 6d 61 74 65 64 52 6f 77 73 2e 47 65 74 56  timatedRows.GetV
10750 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28 29 29  alueOrDefault())
10760 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
10770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10780 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65 4d  offset = SQLiteM
10790 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73 65  arshal.NextOffse
107a0 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tOf(..          
107b0 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
107c0 7a 65 6f 66 28 6c 6f 6e 67 29 2c 20 73 69 7a 65  zeof(long), size
107d0 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
107e0 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 75 74           if (out
107f0 70 75 74 73 2e 43 61 6e 55 73 65 49 6e 64 65 78  puts.CanUseIndex
10800 46 6c 61 67 73 28 29 20 26 26 0d 0a 20 20 20 20  Flags() &&..    
10810 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70              outp
10820 75 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e 48  uts.IndexFlags.H
10830 61 73 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  asValue)..      
10840 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10850 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
10860 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
10870 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74  2(pIndex, offset
10880 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
10890 20 20 20 20 20 20 28 69 6e 74 29 6f 75 74 70 75        (int)outpu
108a0 74 73 2e 49 6e 64 65 78 46 6c 61 67 73 2e 47 65  ts.IndexFlags.Ge
108b0 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74 28  tValueOrDefault(
108c0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
108d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
108e0 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74    offset = SQLit
108f0 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66  eMarshal.NextOff
10900 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20  setOf(..        
10910 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20          offset, 
10920 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 73 69 7a  sizeof(int), siz
10930 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 0d 0a 20  eof(long));.... 
10940 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
10950 75 74 70 75 74 73 2e 43 61 6e 55 73 65 43 6f 6c  utputs.CanUseCol
10960 75 6d 6e 73 55 73 65 64 28 29 20 26 26 0d 0a 20  umnsUsed() &&.. 
10970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
10980 75 74 70 75 74 73 2e 43 6f 6c 75 6d 6e 73 55 73  utputs.ColumnsUs
10990 65 64 2e 48 61 73 56 61 6c 75 65 29 0d 0a 20 20  ed.HasValue)..  
109a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
109b0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
109c0 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
109d0 49 6e 74 36 34 28 70 49 6e 64 65 78 2c 20 6f 66  Int64(pIndex, of
109e0 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
109f0 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75             outpu
10a00 74 73 2e 43 6f 6c 75 6d 6e 73 55 73 65 64 2e 47  ts.ColumnsUsed.G
10a10 65 74 56 61 6c 75 65 4f 72 44 65 66 61 75 6c 74  etValueOrDefault
10a20 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
10a30 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
10a40 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
10a50 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
10ab0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
10ac0 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
10ad0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
10ae0 74 65 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e  teIndexInputs in
10af0 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  puts;..        /
10b00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10b10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
10b20 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49  ee cref="SQLiteI
10b30 6e 64 65 78 49 6e 70 75 74 73 22 20 2f 3e 20 6f  ndexInputs" /> o
10b40 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
10b50 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
10b60 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 70 75 74     /// the input
10b70 73 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  s to the <see cr
10b80 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
10b90 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64  edModule.BestInd
10ba0 65 78 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  ex" />..        
10bb0 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  /// method...   
10bc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
10bd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
10be0 6c 69 63 20 53 51 4c 69 74 65 49 6e 64 65 78 49  lic SQLiteIndexI
10bf0 6e 70 75 74 73 20 49 6e 70 75 74 73 0d 0a 20 20  nputs Inputs..  
10c00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10c10 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
10c20 6e 20 69 6e 70 75 74 73 3b 20 7d 0d 0a 20 20 20  n inputs; }..   
10c30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10c40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10c90 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
10ca0 69 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20  iteIndexOutputs 
10cb0 6f 75 74 70 75 74 73 3b 0d 0a 20 20 20 20 20 20  outputs;..      
10cc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10cd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
10ce0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
10cf0 74 65 49 6e 64 65 78 4f 75 74 70 75 74 73 22 20  teIndexOutputs" 
10d00 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
10d10 63 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20  ce containing.. 
10d20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f         /// the o
10d30 75 74 70 75 74 73 20 66 72 6f 6d 20 74 68 65 20  utputs from the 
10d40 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
10d50 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
10d60 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20  BestIndex" />.. 
10d70 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
10d80 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
10d90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10da0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
10db0 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 4f 75  eIndexOutputs Ou
10dc0 74 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  tputs..        {
10dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
10de0 74 20 7b 20 72 65 74 75 72 6e 20 6f 75 74 70 75  t { return outpu
10df0 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d  ts; }..        }
10e00 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
10e10 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
10e20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
10e30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
10e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10e80 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
10e90 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
10ea0 20 42 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20   Base Class..   
10eb0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10ec0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61      /// This cla
10ed0 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  ss represents a 
10ee0 6d 61 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20  managed virtual 
10ef0 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
10f00 74 69 6f 6e 2e 20 20 49 74 20 69 73 0d 0a 20 20  tion.  It is..  
10f10 20 20 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c 65 64    /// not sealed
10f20 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75   and should be u
10f30 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20  sed as the base 
10f40 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 20 75 73  class for any us
10f50 65 72 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20  er-defined..    
10f60 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c  /// virtual tabl
10f70 65 20 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d  e classes implem
10f80 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64  ented in managed
10f90 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   code...    /// 
10fa0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10fb0 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c  public class SQL
10fc0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
10fd0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  :..            I
10fe0 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e 64  SQLiteNativeHand
10ff0 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 20  le, IDisposable 
11000 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f  /* NOT SEALED */
11010 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
11020 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
11030 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
11040 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11050 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
11060 68 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e 20  he index within 
11070 74 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72  the array of str
11080 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f  ings provided to
11090 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
110a0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
110b0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
110c0 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64  e.Create" /> and
110d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
110e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
110f0 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
11100 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
11110 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  s containing the
11120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
11130 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
11140 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74 68   implementing th
11150 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
11160 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11170 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11180 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
11190 20 69 6e 74 20 4d 6f 64 75 6c 65 4e 61 6d 65 49   int ModuleNameI
111a0 6e 64 65 78 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ndex = 0;....   
111b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
111c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
11200 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
11210 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
11220 2f 2f 20 54 68 65 20 69 6e 64 65 78 20 77 69 74  // The index wit
11230 68 69 6e 20 74 68 65 20 61 72 72 61 79 20 6f 66  hin the array of
11240 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69 64 65   strings provide
11250 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  d to the..      
11260 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11270 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
11280 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
11290 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
112a0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
112b0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
112c0 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  e.Connect" /> me
112d0 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67  thods containing
112e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
112f0 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  / name of the da
11300 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e  tabase containin
11310 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
11320 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
11330 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11340 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
11350 6f 6e 73 74 20 69 6e 74 20 44 61 74 61 62 61 73  onst int Databas
11360 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 31 3b 0d  eNameIndex = 1;.
11370 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
11380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
113c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
113d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
113e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64       /// The ind
113f0 65 78 20 77 69 74 68 69 6e 20 74 68 65 20 61 72  ex within the ar
11400 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 70  ray of strings p
11410 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a  rovided to the..
11420 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
11430 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
11440 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61  nagedModule.Crea
11450 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20  te" /> and..    
11460 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
11470 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
11480 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
11490 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74   /> methods cont
114a0 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  aining the..    
114b0 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20      /// name of 
114c0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
114d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
114e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
114f0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
11500 74 20 69 6e 74 20 54 61 62 6c 65 4e 61 6d 65 49  t int TableNameI
11510 6e 64 65 78 20 3d 20 32 3b 0d 0a 20 20 20 20 20  ndex = 2;..     
11520 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
11530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
11540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11580 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
11590 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
115a0 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
115b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
115c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
115d0 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
115e0 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
115f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11600 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11610 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
11620 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d  me="arguments">.
11630 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
11640 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20   original array 
11650 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
11660 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
11670 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
11680 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
11690 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
116a0 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
116b0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
116c0 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
116d0 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
116e0 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
116f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
11700 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
11710 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
11720 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
11730 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e  string[] argumen
11740 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ts..            
11750 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11760 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61            this.a
11770 72 67 75 6d 65 6e 74 73 20 3d 20 61 72 67 75 6d  rguments = argum
11780 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ents;..        }
11790 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
117a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
117b0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11800 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
11810 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
11820 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
11830 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
11840 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ;..        /// <
11850 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11860 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e    /// The origin
11870 61 6c 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  al array of stri
11880 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  ngs provided to 
11890 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
118a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
118b0 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
118c0 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d  .Create" /> and.
118d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
118e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
118f0 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e  anagedModule.Con
11900 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73  nect" /> methods
11910 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11920 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11930 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61     public virtua
11940 6c 20 73 74 72 69 6e 67 5b 5d 20 41 72 67 75 6d  l string[] Argum
11950 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ents..        {.
11960 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
11970 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
11980 28 29 3b 20 72 65 74 75 72 6e 20 61 72 67 75 6d  (); return argum
11990 65 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ents; }..       
119a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
11a00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11a10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
11a20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
11a30 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20  le implementing 
11a40 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
11a50 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
11a60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11a70 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74       public virt
11a80 75 61 6c 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c  ual string Modul
11a90 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b  eName..        {
11aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
11ab0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
11ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11ad0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
11ae0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11af0 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
11b00 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d  rguments = Argum
11b10 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ents;....       
11b20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
11b30 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
11b40 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
11b50 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
11b60 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 4d 6f 64  nts.Length > Mod
11b70 75 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a  uleNameIndex))..
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11ba0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72         return ar
11bb0 67 75 6d 65 6e 74 73 5b 4d 6f 64 75 6c 65 4e 61  guments[ModuleNa
11bc0 6d 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20  meIndex];..     
11bd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
11bf0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
11c00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11c10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11c20 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
11c30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11c40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
11c50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11cb0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11cc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
11cd0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  e name of the da
11ce0 74 61 62 61 73 65 20 63 6f 6e 74 61 69 6e 69 6e  tabase containin
11cf0 67 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  g this virtual t
11d00 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
11d10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11d20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
11d30 72 74 75 61 6c 20 73 74 72 69 6e 67 20 44 61 74  rtual string Dat
11d40 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20 20 20  abaseName..     
11d50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d60 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
11d70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d80 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
11d90 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
11da0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
11db0 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20 3d 20 41  [] arguments = A
11dc0 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20  rguments;....   
11dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11de0 28 28 61 72 67 75 6d 65 6e 74 73 20 21 3d 20 6e  ((arguments != n
11df0 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
11e00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72               (ar
11e10 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 20 3e  guments.Length >
11e20 20 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64   DatabaseNameInd
11e30 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ex))..          
11e40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11e60 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 44 61  urn arguments[Da
11e70 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65 78 5d  tabaseNameIndex]
11e80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11e90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11ea0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
11eb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ed0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11ef0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11f00 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
11f10 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11f60 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
11f70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11f80 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
11f90 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  f the virtual ta
11fa0 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
11fb0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11fc0 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
11fd0 74 75 61 6c 20 73 74 72 69 6e 67 20 54 61 62 6c  tual string Tabl
11fe0 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b  eName..        {
11ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
12000 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  t..            {
12010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12020 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
12030 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12040 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
12050 72 67 75 6d 65 6e 74 73 20 3d 20 41 72 67 75 6d  rguments = Argum
12060 65 6e 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ents;....       
12070 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
12080 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
12090 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
120a0 20 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65           (argume
120b0 6e 74 73 2e 4c 65 6e 67 74 68 20 3e 20 54 61 62  nts.Length > Tab
120c0 6c 65 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20  leNameIndex)).. 
120d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
120e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
120f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 67        return arg
12100 75 6d 65 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65  uments[TableName
12110 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20  Index];..       
12120 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12130 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
12140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12150 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12160 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12170 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
12180 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12190 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
121a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
12200 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
12210 6e 64 65 78 20 69 6e 64 65 78 3b 0d 0a 20 20 20  ndex index;..   
12220 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12230 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
12240 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
12250 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f  QLiteIndex" /> o
12260 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
12270 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68  ontaining all th
12280 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  e..        /// d
12290 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75  ata for the inpu
122a0 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72  ts and outputs r
122b0 65 6c 61 74 69 6e 67 20 74 6f 20 74 68 65 20 6d  elating to the m
122c0 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 64 65 78  ost recent index
122d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65  ..        /// se
122e0 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  lection...      
122f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12300 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
12310 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74 65 49   virtual SQLiteI
12320 6e 64 65 78 20 49 6e 64 65 78 0d 0a 20 20 20 20  ndex Index..    
12330 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12340 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
12350 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
12360 20 69 6e 64 65 78 3b 20 7d 0d 0a 20 20 20 20 20   index; }..     
12370 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
12380 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
12390 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
123a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
123e0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
123f0 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  ublic Methods.. 
12400 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
12410 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
12420 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68  / This method sh
12430 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 62 65  ould normally be
12440 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20   used by the..  
12450 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
12460 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
12470 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e  gedModule.BestIn
12480 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 20 69  dex" /> method i
12490 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20 20  n order to..    
124a0 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d 20      /// perform 
124b0 69 6e 64 65 78 20 73 65 6c 65 63 74 69 6f 6e 20  index selection 
124c0 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e  based on the con
124d0 73 74 72 61 69 6e 74 73 20 70 72 6f 76 69 64 65  straints provide
124e0 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
124f0 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
12500 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
12510 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12520 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
12530 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
12540 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
12550 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
12560 22 53 51 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e  "SQLiteIndex" />
12570 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
12580 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20   containing all 
12590 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
125a0 20 64 61 74 61 20 66 6f 72 20 74 68 65 20 69 6e   data for the in
125b0 70 75 74 73 20 61 6e 64 20 6f 75 74 70 75 74 73  puts and outputs
125c0 20 72 65 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64   relating to ind
125d0 65 78 20 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20  ex selection... 
125e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
125f0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
12600 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12610 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
12620 20 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a   upon success...
12630 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
12640 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
12650 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 62  public virtual b
12660 6f 6f 6c 20 42 65 73 74 49 6e 64 65 78 28 0d 0a  ool BestIndex(..
12670 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12680 74 65 49 6e 64 65 78 20 69 6e 64 65 78 0d 0a 20  teIndex index.. 
12690 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
126a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
126b0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
126c0 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
126d0 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20       this.index 
126e0 3d 20 69 6e 64 65 78 3b 0d 0a 0d 0a 20 20 20 20  = index;....    
126f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
12700 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rue;..        }.
12710 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12760 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
12770 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12780 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
12790 73 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20  s to record the 
127a0 72 65 6e 61 6d 69 6e 67 20 6f 66 20 74 68 65 20  renaming of the 
127b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 73  virtual table as
127c0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
127d0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
127e0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
127f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12800 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12810 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
12820 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20  e="name">..     
12830 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e     /// The new n
12840 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  ame for the virt
12850 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
12860 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
12870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
12880 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
12890 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70   /// Non-zero up
128a0 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20  on success...   
128b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
128c0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
128d0 6c 69 63 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c  lic virtual bool
128e0 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20   Rename(..      
128f0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
12900 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
12910 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12920 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
12930 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
12940 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72           if ((ar
12950 67 75 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29  guments != null)
12960 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
12970 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e       (arguments.
12980 4c 65 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61  Length > TableNa
12990 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20  meIndex))..     
129a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
129b0 20 20 20 20 20 20 20 20 20 20 61 72 67 75 6d 65            argume
129c0 6e 74 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64  nts[TableNameInd
129d0 65 78 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20  ex] = name;..   
129e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
129f0 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
12a00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
12a20 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
12a30 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
12a40 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
12a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12aa0 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
12ab0 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d  teNativeHandle M
12ac0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
12ad0 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e  private IntPtr n
12ae0 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20  ativeHandle;..  
12af0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12b00 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
12b10 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64   Returns the und
12b20 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e  erlying SQLite n
12b30 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73  ative handle ass
12b40 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
12b50 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
12b60 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
12b70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
12b80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12b90 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
12ba0 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e  IntPtr NativeHan
12bb0 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  dle..        {..
12bc0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
12bd0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
12be0 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65  ); return native
12bf0 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20  Handle; }..     
12c00 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
12c10 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64  set { nativeHand
12c20 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  le = value; }.. 
12c30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12c40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
12c50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12ca0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
12cb0 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
12cc0 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
12cd0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12ce0 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f         /// Dispo
12cf0 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  ses of this obje
12d00 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
12d10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12d20 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
12d30 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
12d40 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
12d50 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
12d60 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
12d70 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
12d80 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
12d90 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
12da0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
12db0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
12dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12e10 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
12e20 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65  ble "Pattern" Me
12e30 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
12e40 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
12e50 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f  osed;..        /
12e60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12e70 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73        /// Throws
12e80 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f   an <see cref="O
12e90 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
12ea0 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68  eption" /> if th
12eb0 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20  is object..     
12ec0 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20     /// instance 
12ed0 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
12ee0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
12ef0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12f00 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
12f10 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
12f20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
12f30 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
12f40 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
12f50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12f60 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
12f70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12f80 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
12f90 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
12fa0 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fc0 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56    typeof(SQLiteV
12fd0 69 72 74 75 61 6c 54 61 62 6c 65 29 2e 4e 61 6d  irtualTable).Nam
12fe0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
12ff0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20   }..#endif..    
13000 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13010 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13060 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13070 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44  >..        /// D
13080 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20  isposes of this 
13090 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
130a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
130b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
130c0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
130d0 65 3d 22 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a  e="disposing">..
130e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
130f0 7a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  zero if this met
13100 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
13110 6c 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  led from the..  
13120 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
13130 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20  ref="Dispose()" 
13140 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f  /> method.  Zero
13150 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   if this method 
13160 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d  is being called.
13170 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f  .        /// fro
13180 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e  m the finalizer.
13190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
131a0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
131b0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
131c0 6c 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62  l void Dispose(b
131d0 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a  ool disposing)..
131e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
131f0 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
13200 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
13210 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13220 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70        //if (disp
13230 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
13240 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20          //{..   
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
13260 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
13290 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
132a0 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65  / dispose manage
132b0 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
132c0 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
132d0 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f       //    /////
132e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13310 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20   //}....        
13320 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
13330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
13350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13360 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
13370 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
13380 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
13390 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
133c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
133d0 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
133e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
133f0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
13400 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
13410 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
13420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13460 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
13470 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
13480 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  r..        /// <
13490 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
134a0 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20    /// Finalizes 
134b0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
134c0 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
134d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
134e0 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65 56 69         ~SQLiteVi
134f0 72 74 75 61 6c 54 61 62 6c 65 28 29 0d 0a 20 20  rtualTable()..  
13500 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13510 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
13520 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  se);..        }.
13530 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
13540 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
13550 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
13560 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
135b0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
135c0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
135d0 75 72 73 6f 72 20 42 61 73 65 20 43 6c 61 73 73  ursor Base Class
135e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
135f0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
13600 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e  s class represen
13610 74 73 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72  ts a managed vir
13620 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
13630 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  r implementation
13640 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73  ...    /// It is
13650 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20   not sealed and 
13660 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 61  should be used a
13670 73 20 74 68 65 20 62 61 73 65 20 63 6c 61 73 73  s the base class
13680 20 66 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f   for any..    //
13690 2f 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76  / user-defined v
136a0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
136b0 73 6f 72 20 63 6c 61 73 73 65 73 20 69 6d 70 6c  sor classes impl
136c0 65 6d 65 6e 74 65 64 20 69 6e 20 6d 61 6e 61 67  emented in manag
136d0 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
136e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
136f0 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53    public class S
13700 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
13710 65 43 75 72 73 6f 72 20 3a 0d 0a 20 20 20 20 20  eCursor :..     
13720 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
13730 74 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73  tiveHandle, IDis
13740 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
13750 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
13760 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
13770 20 50 72 6f 74 65 63 74 65 64 20 43 6f 6e 73 74   Protected Const
13780 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ants..        //
13790 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
137a0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
137b0 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  lue represents a
137c0 6e 20 69 6e 76 61 6c 69 64 20 69 6e 74 65 67 65  n invalid intege
137d0 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
137e0 75 6d 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  umber...        
137f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13800 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
13810 64 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  d static readonl
13820 79 20 69 6e 74 20 49 6e 76 61 6c 69 64 52 6f 77  y int InvalidRow
13830 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20  Index = 0;..    
13840 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
13850 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
138b0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
138c0 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
138d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
138e0 20 20 2f 2f 2f 20 54 68 65 20 66 69 65 6c 64 20    /// The field 
138f0 68 6f 6c 64 73 20 74 68 65 20 69 6e 74 65 67 65  holds the intege
13900 72 20 72 6f 77 20 73 65 71 75 65 6e 63 65 20 6e  r row sequence n
13910 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
13920 72 72 65 6e 74 20 72 6f 77 0d 0a 20 20 20 20 20  rrent row..     
13930 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 64 20 74     /// pointed t
13940 6f 20 62 79 20 74 68 69 73 20 63 75 72 73 6f 72  o by this cursor
13950 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
13960 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13970 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13980 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 72     private int r
13990 6f 77 49 6e 64 65 78 3b 0d 0a 20 20 20 20 20 20  owIndex;..      
139a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
139b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
139c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
139f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13a00 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
13a10 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72  on Public Constr
13a20 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
13a30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13a40 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
13a50 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
13a60 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
13a70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13a80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13a90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
13aa0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
13ab0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
13ac0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
13ad0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
13ae0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
13af0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
13b00 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
13b10 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
13b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13b30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
13b40 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72  public SQLiteVir
13b50 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28  tualTableCursor(
13b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
13b70 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
13b80 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
13b90 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
13ba0 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
13bb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13bc0 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 20 3d      this.table =
13bd0 20 74 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20   table;..       
13be0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
13bf0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
13c00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13c50 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
13c60 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
13c70 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
13c80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13c90 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
13ca0 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
13cb0 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20  this class...   
13cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13cd0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
13ce0 76 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75  vate SQLiteVirtu
13cf0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d  alTableCursor().
13d00 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
13d10 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65 78          rowIndex
13d20 20 3d 20 49 6e 76 61 6c 69 64 52 6f 77 49 6e 64   = InvalidRowInd
13d30 65 78 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ex;..        }..
13d40 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
13d50 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
13d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13da0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13db0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
13dc0 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
13dd0 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
13de0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
13df0 61 62 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  able;..        /
13e00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13e10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
13e20 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
13e30 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
13e40 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
13e50 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
13e60 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
13e70 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
13e80 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
13e90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13ea0 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
13eb0 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  al SQLiteVirtual
13ec0 54 61 62 6c 65 20 54 61 62 6c 65 0d 0a 20 20 20  Table Table..   
13ed0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13ee0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
13ef0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
13f00 6e 20 74 61 62 6c 65 3b 20 7d 0d 0a 20 20 20 20  n table; }..    
13f10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13f20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
13f70 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
13f80 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a 20 20  indexNumber;..  
13f90 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13fa0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
13fb0 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
13fc0 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
13fd0 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
13fe0 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  .  This value wi
13ff0 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
14000 62 65 20 73 65 74 20 76 69 61 20 74 68 65 20 3c  be set via the <
14010 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74 65 72  see cref="Filter
14020 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
14030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14040 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
14050 62 6c 69 63 20 76 69 72 74 75 61 6c 20 69 6e 74  blic virtual int
14060 20 49 6e 64 65 78 4e 75 6d 62 65 72 0d 0a 20 20   IndexNumber..  
14070 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14080 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
14090 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
140a0 72 6e 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 20  rn indexNumber; 
140b0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
140c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
140d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
140e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
14110 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
14120 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78 53  te string indexS
14130 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20  tring;..        
14140 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14150 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
14160 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
14170 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
14180 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69  cted index.  Thi
14190 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20  s value will..  
141a0 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74        /// be set
141b0 20 76 69 61 20 74 68 65 20 3c 73 65 65 20 63 72   via the <see cr
141c0 65 66 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ef="Filter" /> m
141d0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
141e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
141f0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14200 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 49 6e  irtual string In
14210 64 65 78 53 74 72 69 6e 67 0d 0a 20 20 20 20 20  dexString..     
14220 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14230 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
14240 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
14250 69 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d 0d 0a  indexString; }..
14260 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14270 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
142c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
142d0 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61  SQLiteValue[] va
142e0 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f  lues;..        /
142f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14300 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
14310 6c 75 65 73 20 75 73 65 64 20 74 6f 20 66 69 6c  lues used to fil
14320 74 65 72 20 74 68 65 20 72 6f 77 73 20 72 65 74  ter the rows ret
14330 75 72 6e 65 64 20 76 69 61 20 74 68 69 73 20 63  urned via this c
14340 75 72 73 6f 72 20 6f 62 6a 65 63 74 0d 0a 20 20  ursor object..  
14350 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e        /// instan
14360 63 65 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ce.  This value 
14370 77 69 6c 6c 20 62 65 20 73 65 74 20 76 69 61 20  will be set via 
14380 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 46  the <see cref="F
14390 69 6c 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  ilter" />..     
143a0 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
143b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
143c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
143d0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 53  public virtual S
143e0 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 56 61 6c  QLiteValue[] Val
143f0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ues..        {..
14400 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
14410 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
14420 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73  ); return values
14430 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
14440 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
14450 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
14460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
144b0 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63 74   #region Protect
144c0 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ed Methods..    
144d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
144e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
144f0 74 74 65 6d 70 74 73 20 74 6f 20 70 65 72 73 69  ttempts to persi
14500 73 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  st the specified
14510 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
14520 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
14530 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ct..        /// 
14540 69 6e 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64  instances in ord
14550 65 72 20 74 6f 20 6d 61 6b 65 20 74 68 65 6d 20  er to make them 
14560 61 76 61 69 6c 61 62 6c 65 20 61 66 74 65 72 20  available after 
14570 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
14580 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
14590 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
145a0 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  .Filter" /> meth
145b0 6f 64 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20  od returns...   
145c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
145d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
145e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
145f0 6c 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  lues">..        
14600 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66  /// The array of
14610 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
14620 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65  teValue" /> obje
14630 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 20  ct instances to 
14640 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
14650 70 65 72 73 69 73 74 65 64 2e 0d 0a 20 20 20 20  persisted...    
14660 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
14670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
14680 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
14690 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
146a0 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
146b0 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62  LiteValue" /> ob
146c0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 74  ject instances t
146d0 68 61 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20  hat were..      
146e0 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c    /// successful
146f0 6c 79 20 70 65 72 73 69 73 74 65 64 2e 0d 0a 20  ly persisted... 
14700 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
14710 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
14720 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
14730 20 69 6e 74 20 54 72 79 50 65 72 73 69 73 74 56   int TryPersistV
14740 61 6c 75 65 73 28 0d 0a 20 20 20 20 20 20 20 20  alues(..        
14750 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
14760 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20  ] values..      
14770 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
14780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14790 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
147a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
147b0 66 20 28 76 61 6c 75 65 73 20 21 3d 20 6e 75 6c  f (values != nul
147c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
147d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
147e0 20 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69     foreach (SQLi
147f0 74 65 56 61 6c 75 65 20 76 61 6c 75 65 20 69 6e  teValue value in
14800 20 76 61 6c 75 65 73 29 0d 0a 20 20 20 20 20 20   values)..      
14810 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14830 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
14840 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
14860 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14880 20 28 76 61 6c 75 65 2e 50 65 72 73 69 73 74 28   (value.Persist(
14890 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
148a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
148b0 6c 74 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  lt++;..         
148c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
148d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
148e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
148f0 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sult;..        }
14900 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
14910 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14960 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14970 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
14980 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  c Methods..     
14990 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
149a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
149b0 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64  is method should
149c0 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 20 75 73 65   normally be use
149d0 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
149e0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
149f0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
14a00 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e  odule.Filter" />
14a10 20 6d 65 74 68 6f 64 20 69 6e 20 6f 72 64 65 72   method in order
14a20 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
14a30 20 70 65 72 66 6f 72 6d 20 66 69 6c 74 65 72 69   perform filteri
14a40 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
14a50 20 72 6f 77 73 20 61 6e 64 2f 6f 72 20 74 6f 20   rows and/or to 
14a60 72 65 63 6f 72 64 20 74 68 65 20 66 69 6c 74 65  record the filte
14a70 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ring..        //
14a80 2f 20 63 72 69 74 65 72 69 61 20 70 72 6f 76 69  / criteria provi
14a90 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  ded by the SQLit
14aa0 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
14ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
14ac0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14ad0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
14ae0 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d  ="indexNumber">.
14af0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d  .        /// Num
14b00 62 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70  ber used to help
14b10 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65   identify the se
14b20 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
14b30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
14b40 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
14b50 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e   <param name="in
14b60 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20  dexString">..   
14b70 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20       /// String 
14b80 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
14b90 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
14ba0 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20  ed index...     
14bb0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
14bc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
14bd0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73  ram name="values
14be0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
14bf0 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65  The values corre
14c00 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68  sponding to each
14c10 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73   column in the s
14c20 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a  elected index...
14c30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
14c40 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
14c50 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69  blic virtual voi
14c60 64 20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20  d Filter(..     
14c70 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
14c80 4e 75 6d 62 65 72 2c 0d 0a 20 20 20 20 20 20 20  Number,..       
14c90 20 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65       string inde
14ca0 78 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20  xString,..      
14cb0 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
14cc0 65 5b 5d 20 76 61 6c 75 65 73 0d 0a 20 20 20 20  e[] values..    
14cd0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
14ce0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14cf0 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
14d00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14d10 20 20 69 66 20 28 28 76 61 6c 75 65 73 20 21 3d    if ((values !=
14d20 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
14d30 20 20 20 20 20 20 20 20 20 20 20 28 54 72 79 50             (TryP
14d40 65 72 73 69 73 74 56 61 6c 75 65 73 28 76 61 6c  ersistValues(val
14d50 75 65 73 29 20 21 3d 20 76 61 6c 75 65 73 2e 4c  ues) != values.L
14d60 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20 20 20  ength))..       
14d70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14d80 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
14d90 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
14da0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
14db0 20 20 20 20 20 20 20 20 22 66 61 69 6c 65 64 20          "failed 
14dc0 74 6f 20 70 65 72 73 69 73 74 20 6f 6e 65 20 6f  to persist one o
14dd0 72 20 6d 6f 72 65 20 76 61 6c 75 65 73 22 29 3b  r more values");
14de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14df0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
14e00 68 69 73 2e 69 6e 64 65 78 4e 75 6d 62 65 72 20  his.indexNumber 
14e10 3d 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b 0d 0a  = indexNumber;..
14e20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
14e30 2e 69 6e 64 65 78 53 74 72 69 6e 67 20 3d 20 69  .indexString = i
14e40 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20  ndexString;..   
14e50 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61           this.va
14e60 6c 75 65 73 20 3d 20 76 61 6c 75 65 73 3b 0d 0a  lues = values;..
14e70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14e80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14ed0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
14ee0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
14ef0 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68  // Determines th
14f00 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65  e integer row se
14f10 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66 6f  quence number fo
14f20 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f  r the current ro
14f30 77 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  w...        /// 
14f40 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14f50 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
14f60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
14f70 68 65 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73  he integer row s
14f80 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 66  equence number f
14f90 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
14fa0 6f 77 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66 0d  ow -OR- zero if.
14fb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 74 20  .        /// it 
14fc0 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
14fd0 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ined...        /
14fe0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
14ff0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
15000 72 74 75 61 6c 20 69 6e 74 20 47 65 74 52 6f 77  rtual int GetRow
15010 49 6e 64 65 78 28 29 0d 0a 20 20 20 20 20 20 20  Index()..       
15020 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15030 72 65 74 75 72 6e 20 72 6f 77 49 6e 64 65 78 3b  return rowIndex;
15040 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
15050 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
150a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
150b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
150c0 20 2f 2f 2f 20 41 64 6a 75 73 74 73 20 74 68 65   /// Adjusts the
150d0 20 69 6e 74 65 67 65 72 20 72 6f 77 20 73 65 71   integer row seq
150e0 75 65 6e 63 65 20 6e 75 6d 62 65 72 20 73 6f 20  uence number so 
150f0 74 68 61 74 20 69 74 20 72 65 66 65 72 73 20 74  that it refers t
15100 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
15110 2f 2f 20 6e 65 78 74 20 72 6f 77 2e 0d 0a 20 20  // next row...  
15120 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15130 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
15140 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76 6f 69  blic virtual voi
15150 64 20 4e 65 78 74 52 6f 77 49 6e 64 65 78 28 29  d NextRowIndex()
15160 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15170 20 20 20 20 20 20 20 20 20 72 6f 77 49 6e 64 65           rowInde
15180 78 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  x++;..        }.
15190 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
151a0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
151b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
151f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15200 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74    #region ISQLit
15210 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65  eNativeHandle Me
15220 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
15230 72 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61  rivate IntPtr na
15240 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20  tiveHandle;..   
15250 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15260 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
15270 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65  Returns the unde
15280 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61  rlying SQLite na
15290 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f  tive handle asso
152a0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
152b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62  ..        /// ob
152c0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
152d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
152e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
152f0 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49  public virtual I
15300 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64  ntPtr NativeHand
15310 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  le..        {.. 
15320 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
15330 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
15340 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48  ; return nativeH
15350 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20  andle; }..      
15360 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73        internal s
15370 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c  et { nativeHandl
15380 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
15390 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
153a0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
153b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
153c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15400 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
15410 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
15420 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
15430 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15440 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
15450 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
15460 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
15470 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15480 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
15490 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
154a0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
154b0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
154c0 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
154d0 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
154e0 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
154f0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
15500 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
15510 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
15570 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
15580 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
15590 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
155a0 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
155b0 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed;..        //
155c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
155d0 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20       /// Throws 
155e0 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62  an <see cref="Ob
155f0 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
15600 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69  ption" /> if thi
15610 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20  s object..      
15620 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68    /// instance h
15630 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64  as been disposed
15640 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
15650 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15660 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
15670 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
15680 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
15690 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f       {..#if THRO
156a0 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20  W_ON_DISPOSED.. 
156b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
156c0 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
156d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
156e0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
156f0 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
15700 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  dException(..   
15710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15720 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56 69   typeof(SQLiteVi
15730 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
15740 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
15750 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
15760 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
15770 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
157c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
157d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
157e0 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20  /// Disposes of 
157f0 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74  this object inst
15800 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
15810 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15820 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
15830 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e  m name="disposin
15840 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
15850 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69   Non-zero if thi
15860 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e  s method is bein
15870 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68  g called from th
15880 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
15890 73 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73  see cref="Dispos
158a0 65 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20  e()" /> method. 
158b0 20 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65   Zero if this me
158c0 74 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61  thod is being ca
158d0 6c 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lled..        //
158e0 2f 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c  / from the final
158f0 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  izer...        /
15900 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
15910 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
15920 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
15930 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
15940 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ng)..        {..
15950 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
15960 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
15970 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
15990 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
159a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b               //{
159b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
159c0 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
159f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
15a00 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
15a10 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
15a20 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
15a30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a60 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
15a70 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20        //}....   
15a80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
15a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ab0 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
15ac0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
15ad0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
15ae0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
15af0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
15b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
15b30 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
15b40 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
15b50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15b60 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
15b70 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
15b80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
15bd0 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
15be0 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  ructor..        
15bf0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15c00 20 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c         /// Final
15c10 69 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74  izes this object
15c20 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
15c30 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15c40 79 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c  y>..        ~SQL
15c50 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
15c60 75 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20  ursor()..       
15c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15c80 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
15c90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
15ca0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15cb0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
15cc0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
15cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15d10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
15d20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e  #region ISQLiteN
15d30 61 74 69 76 65 48 61 6e 64 6c 65 20 49 6e 74 65  ativeHandle Inte
15d40 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rface..    /// <
15d50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
15d60 2f 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  / This interface
15d70 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6e 61   represents a na
15d80 74 69 76 65 20 68 61 6e 64 6c 65 20 70 72 6f 76  tive handle prov
15d90 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  ided by the SQLi
15da0 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f  te core..    ///
15db0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
15dc0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15dd0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66     public interf
15de0 61 63 65 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ace ISQLiteNativ
15df0 65 48 61 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a  eHandle..    {..
15e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15e20 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 68 61  // The native ha
15e30 6e 64 6c 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20  ndle value...   
15e40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15e50 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ry>..        Int
15e60 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65  Ptr NativeHandle
15e70 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 7d   { get; }..    }
15e80 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
15e90 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
15ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ee0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
15ef0 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  on ISQLiteManage
15f00 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72 66 61 63  dModule Interfac
15f10 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  e..    /// <summ
15f20 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
15f30 69 73 20 69 6e 74 65 72 66 61 63 65 20 72 65 70  is interface rep
15f40 72 65 73 65 6e 74 73 20 61 20 76 69 72 74 75 61  resents a virtua
15f50 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
15f60 74 61 74 69 6f 6e 20 77 72 69 74 74 65 6e 20 69  tation written i
15f70 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 61 67  n..    /// manag
15f80 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f  ed code...    //
15f90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15fa0 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61    public interfa
15fb0 63 65 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  ce ISQLiteManage
15fc0 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 7b 0d 0a  dModule..    {..
15fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
15fe0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
15ff0 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  // Returns non-z
16000 65 72 6f 20 69 66 20 74 68 65 20 73 63 68 65 6d  ero if the schem
16010 61 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  a for the virtua
16020 6c 20 74 61 62 6c 65 20 68 61 73 20 62 65 65 6e  l table has been
16030 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
16040 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20 20 20  clared...       
16050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16060 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 44 65  .        bool De
16070 63 6c 61 72 65 64 20 7b 20 67 65 74 3b 20 7d 0d  clared { get; }.
16080 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
16090 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
160e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
160f0 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73       /// Returns
16100 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
16110 20 6d 6f 64 75 6c 65 20 61 73 20 69 74 20 77 61   module as it wa
16120 73 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  s registered wit
16130 68 20 74 68 65 20 53 51 4c 69 74 65 0d 0a 20 20  h the SQLite..  
16140 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 65 20 6c        /// core l
16150 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
16160 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16170 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
16180 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d 0d 0a 0d  Name { get; }...
16190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
161a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
161f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16200 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
16210 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
16220 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
16230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
16240 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
16250 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
16260 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
16270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
16280 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
16290 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
162a0 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a  ="connection">..
162b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
162c0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
162d0 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20  eConnection" /> 
162e0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
162f0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
16300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
16310 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
16320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
16330 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
16340 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
16350 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
16360 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
16370 61 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20  ative user-data 
16380 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74  pointer associat
16390 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  ed with this mod
163a0 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a  ule, as it was..
163b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76          /// prov
163c0 69 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69  ided to the SQLi
163d0 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
163e0 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20  when the native 
163f0 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d  module instance.
16400 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73  .        /// was
16410 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20   created...     
16420 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16430 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16440 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65  ram name="argume
16450 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  nts">..        /
16460 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6e 61  // The module na
16470 6d 65 2c 20 64 61 74 61 62 61 73 65 20 6e 61 6d  me, database nam
16480 65 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  e, virtual table
16490 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c 6c 20 6f   name, and all o
164a0 74 68 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ther..        //
164b0 2f 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73  / arguments pass
164c0 65 64 20 74 6f 20 74 68 65 20 43 52 45 41 54 45  ed to the CREATE
164d0 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
164e0 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
164f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
16500 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
16510 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
16520 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
16530 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
16540 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
16550 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
16560 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20 20 20  contain the..   
16570 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
16580 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
16590 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
165a0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
165b0 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
165c0 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 72 74      /// the virt
165d0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
165e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
165f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16600 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
16610 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
16620 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68  Upon failure, th
16630 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73  is parameter mus
16640 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  t be modified to
16650 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f   contain an erro
16660 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
16670 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20 20  essage...       
16680 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
16690 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
166a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
166b0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
166c0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
166d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
166e0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
166f0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
16700 65 20 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20  e Create(..     
16710 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
16720 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
16730 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  on,  /* in */.. 
16740 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
16750 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 20 20  r pClientData,  
16760 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
16770 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  /..            s
16780 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74  tring[] argument
16790 73 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  s,           /* 
167a0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
167b0 20 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72     ref SQLiteVir
167c0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
167d0 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20   /* out */..    
167e0 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
167f0 6e 67 20 65 72 72 6f 72 20 20 20 20 20 20 20 20  ng error        
16800 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
16810 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
16820 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
16830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16840 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
16880 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16890 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
168a0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
168b0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
168c0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
168d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
168e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
168f0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
16900 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
16910 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16920 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
16930 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
16940 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
16950 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
16960 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
16970 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
16980 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ce associated wi
16990 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
169a0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
169b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
169c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
169d0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
169e0 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
169f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
16a00 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
16a10 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
16a20 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
16a30 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
16a40 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
16a50 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
16a60 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
16a70 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
16a80 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
16a90 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
16aa0 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
16ab0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16ac0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16ad0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
16ae0 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
16af0 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
16b00 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20   name, database 
16b10 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61  name, virtual ta
16b20 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c  ble name, and al
16b30 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  l other..       
16b40 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70   /// arguments p
16b50 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45  assed to the CRE
16b60 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
16b70 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  E statement...  
16b80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16b90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16ba0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
16bb0 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
16bc0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
16bd0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
16be0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
16bf0 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
16c00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
16c10 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
16c20 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
16c30 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
16c40 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
16c50 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
16c60 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
16c70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
16c80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
16c90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
16ca0 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
16cb0 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
16cc0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
16cd0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
16ce0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65   to contain an e
16cf0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
16d00 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  / message...    
16d10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
16d20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
16d30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
16d40 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
16d50 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
16d60 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
16d70 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
16d80 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
16d90 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d 0a 20  Code Connect(.. 
16da0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
16db0 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
16dc0 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a  ection,  /* in *
16dd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  /..            I
16de0 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74  ntPtr pClientDat
16df0 61 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  a,           /* 
16e00 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
16e10 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75     string[] argu
16e20 6d 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20  ments,          
16e30 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
16e40 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
16e50 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
16e60 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a  ble, /* out */..
16e70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
16e80 73 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20  string error    
16e90 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74            /* out
16ea0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16eb0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
16ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16f10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
16f30 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
16f40 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
16f50 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
16f60 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
16f70 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
16f80 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  e.xBestIndex" />
16f90 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
16fa0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16fb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
16fc0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
16fd0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
16fe0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
16ff0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
17000 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
17010 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
17020 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69  ..        /// wi
17030 74 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  th this virtual 
17040 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
17050 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17060 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
17070 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
17080 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
17090 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
170a0 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62 6a 65 63  eIndex" /> objec
170b0 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
170c0 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65 0d 0a 20  ining all the.. 
170d0 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20         /// data 
170e0 66 6f 72 20 74 68 65 20 69 6e 70 75 74 73 20 61  for the inputs a
170f0 6e 64 20 6f 75 74 70 75 74 73 20 72 65 6c 61 74  nd outputs relat
17100 69 6e 67 20 74 6f 20 69 6e 64 65 78 20 73 65 6c  ing to index sel
17110 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
17120 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
17140 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
17150 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
17160 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
17170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17180 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17190 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
171a0 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20  e BestIndex(..  
171b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
171c0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
171d0 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  le, /* in */..  
171e0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
171f0 49 6e 64 65 78 20 69 6e 64 65 78 20 20 20 20 20  Index index     
17200 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75 74 20 2a      /* in, out *
17210 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
17220 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17280 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17290 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
172a0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
172b0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
172c0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
172d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
172e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
172f0 78 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20  xDisconnect" /> 
17300 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
17310 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17320 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
17330 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
17340 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
17350 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
17360 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
17370 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
17380 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
17390 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
173a0 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
173b0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
173c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
173d0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
173e0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
173f0 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
17400 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
17410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
17420 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17430 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
17440 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  Disconnect(..   
17450 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
17460 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
17470 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  e /* in */..    
17480 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20          );....  
17490 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
174a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
174e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
174f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
17500 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
17510 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  is called in res
17520 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20  ponse to the..  
17530 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
17540 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
17550 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f  veModule.xDestro
17560 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  y" /> method... 
17570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
17580 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17590 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
175a0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
175b0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
175c0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
175d0 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
175e0 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
175f0 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
17600 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
17610 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
17620 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17630 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17640 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17650 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
17660 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
17670 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
17680 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
17690 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
176a0 72 43 6f 64 65 20 44 65 73 74 72 6f 79 28 0d 0a  rCode Destroy(..
176b0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
176c0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
176d0 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
176e0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
176f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
17750 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17760 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
17770 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
17780 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
17790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
177a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
177b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
177c0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
177d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
177e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
177f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17800 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
17810 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
17820 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
17830 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  lTable" /> objec
17840 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63  t instance assoc
17850 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  iated..        /
17860 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72  // with this vir
17870 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
17880 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17890 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
178a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
178b0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
178c0 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
178d0 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
178e0 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
178f0 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
17900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17910 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
17920 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
17930 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
17940 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
17950 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
17960 20 74 68 65 20 6e 65 77 6c 79 20 6f 70 65 6e 65   the newly opene
17970 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  d virtual table 
17980 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20  cursor...       
17990 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
179a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
179b0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
179c0 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
179d0 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
179e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
179f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17a00 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
17a10 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20  e Open(..       
17a20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
17a30 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 20  alTable table,  
17a40 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
17a50 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
17a60 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ef SQLiteVirtual
17a70 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73  TableCursor curs
17a80 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  or /* out */..  
17a90 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
17aa0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17af0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
17b00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17b10 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
17b20 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
17b30 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
17b40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
17b50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
17b60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
17b70 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
17b80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
17b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17ba0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17bb0 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
17bc0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
17bd0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
17be0 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
17bf0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
17c00 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  e..        /// a
17c10 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
17c20 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70  he previously op
17c30 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
17c40 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d  le cursor to be.
17c50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  .        /// use
17c60 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
17c70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
17c80 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
17c90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
17ca0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
17cb0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
17cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
17cd0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
17ce0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6c 6f  iteErrorCode Clo
17cf0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
17d00 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
17d10 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
17d20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
17d30 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
17d40 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17da0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17db0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
17dc0 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
17dd0 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
17de0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
17df0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
17e00 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22  eModule.xFilter"
17e10 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
17e20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17e30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
17e50 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
17e60 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
17e70 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
17e80 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
17e90 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
17ea0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
17eb0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
17ec0 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
17ed0 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
17ee0 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20   cursor to be.. 
17ef0 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e         /// used.
17f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17f10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17f20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17f30 22 69 6e 64 65 78 4e 75 6d 62 65 72 22 3e 0d 0a  "indexNumber">..
17f40 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62          /// Numb
17f50 65 72 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  er used to help 
17f60 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
17f70 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20  ected index...  
17f80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
17f90 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
17fa0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
17fb0 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20  exString">..    
17fc0 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 20 75      /// String u
17fd0 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65 6e  sed to help iden
17fe0 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74 65  tify the selecte
17ff0 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20  d index...      
18000 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
18010 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
18020 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22  am name="values"
18030 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18040 68 65 20 76 61 6c 75 65 73 20 63 6f 72 72 65 73  he values corres
18050 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61 63 68 20  ponding to each 
18060 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 73 65  column in the se
18070 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20  lected index... 
18080 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
18090 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
180a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
180b0 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
180c0 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
180d0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
180e0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
180f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
18100 72 6f 72 43 6f 64 65 20 46 69 6c 74 65 72 28 0d  rorCode Filter(.
18110 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
18120 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
18130 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a  ursor cursor, /*
18140 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18150 20 20 20 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d      int indexNum
18160 62 65 72 2c 20 20 20 20 20 20 20 20 20 20 20 20  ber,            
18170 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
18180 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
18190 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c 20 20  g indexString,  
181a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
181b0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
181c0 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
181d0 76 61 6c 75 65 73 20 20 20 20 20 20 20 20 20 20  values          
181e0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
181f0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18200 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18250 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18260 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18270 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
18280 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
18290 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
182a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
182b0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
182c0 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22  iveModule.xNext"
182d0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
182e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
182f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18300 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75   <param name="cu
18310 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
18320 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
18330 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
18340 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
18350 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
18360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
18370 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
18380 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e   previously open
18390 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
183a0 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20   cursor to be.. 
183b0 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e         /// used.
183c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
183d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
183e0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
183f0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
18400 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
18410 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
18420 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
18430 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
18440 65 45 72 72 6f 72 43 6f 64 65 20 4e 65 78 74 28  eErrorCode Next(
18450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
18460 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
18470 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 2f 2a  Cursor cursor /*
18480 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
18490 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
184a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
184b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
184f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18500 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
18510 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
18520 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
18530 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
18540 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
18550 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
18560 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
18570 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
18580 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
18590 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
185a0 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e  m name="cursor">
185b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
185c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
185d0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
185e0 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ursor" /> object
185f0 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20   instance..     
18600 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
18610 64 20 77 69 74 68 20 74 68 65 20 70 72 65 76 69  d with the previ
18620 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20 76 69 72  ously opened vir
18630 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f  tual table curso
18640 72 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  r to be..       
18650 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20   /// used...    
18660 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
18680 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
18690 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
186a0 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 72   no more rows ar
186b0 65 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a 65 72  e available; zer
186c0 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
186d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
186e0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f  rns>..        bo
186f0 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20 20 20  ol Eof(..       
18700 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
18710 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
18720 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  rsor /* in */.. 
18730 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
18740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
187a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
187b0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
187c0 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
187d0 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
187e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
187f0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
18800 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
18810 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  umn" /> method..
18820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
18830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18840 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18850 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20  ="cursor">..    
18860 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
18870 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
18880 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22  tualTableCursor"
18890 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
188a0 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nce..        ///
188b0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
188c0 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20   the previously 
188d0 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74  opened virtual t
188e0 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62  able cursor to b
188f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  e..        /// u
18900 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  sed...        //
18910 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
18920 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
18930 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22 3e 0d 0a  ame="context">..
18940 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
18950 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
18960 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20 6f 62 6a  eContext" /> obj
18970 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  ect instance to 
18980 62 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20  be used for..   
18990 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 69       /// returni
189a0 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
189b0 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74 6f   column value to
189c0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
189d0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
189e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
189f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18a00 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
18a10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18a20 68 65 20 7a 65 72 6f 2d 62 61 73 65 64 20 69 6e  he zero-based in
18a30 64 65 78 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  dex correspondin
18a40 67 20 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 20  g to the column 
18a50 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a  containing the..
18a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75          /// valu
18a70 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  e to be returned
18a80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
18a90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
18aa0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
18ab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
18ac0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
18ad0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
18ae0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
18af0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
18b00 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6c 75  teErrorCode Colu
18b10 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn(..           
18b20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
18b30 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
18b40 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
18b50 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
18b60 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c 20 20  ntext context,  
18b70 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
18b80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  /..            i
18b90 6e 74 20 69 6e 64 65 78 20 20 20 20 20 20 20 20  nt index        
18ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18bb0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
18bc0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
18bd0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18c20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
18c30 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18c40 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73  / This method is
18c50 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
18c60 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  nse to the..    
18c70 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
18c80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
18c90 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f  Module.xRowId" /
18ca0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
18cb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
18cc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18cd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73  param name="curs
18ce0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
18cf0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
18d00 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
18d10 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62  bleCursor" /> ob
18d20 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20  ject instance.. 
18d30 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
18d40 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
18d50 72 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64  reviously opened
18d60 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
18d70 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20  ursor to be..   
18d80 20 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a       /// used...
18d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
18da0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
18db0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
18dc0 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20  owId">..        
18dd0 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
18de0 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
18df0 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
18e00 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
18e10 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20   unique..       
18e20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77   /// integer row
18e30 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
18e40 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20  the current row 
18e50 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
18e60 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20  d cursor...     
18e70 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
18e80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
18e90 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
18ea0 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
18eb0 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
18ec0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
18ed0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
18ee0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
18ef0 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20 20 20 20  ode RowId(..    
18f00 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
18f10 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
18f20 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a   cursor, /* in *
18f30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
18f40 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20 20  ef long rowId   
18f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f60 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20  /* out */..     
18f70 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
18f80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
18fe0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
18ff0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
19000 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
19010 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
19020 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
19030 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
19040 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
19050 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
19060 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
19070 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
19080 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
19090 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
190a0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
190b0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
190c0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
190d0 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
190e0 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
190f0 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
19100 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
19110 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
19120 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
19130 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73  ram name="values
19140 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
19150 54 68 65 20 61 72 72 61 79 20 6f 66 20 3c 73 65  The array of <se
19160 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61  e cref="SQLiteVa
19170 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  lue" /> object i
19180 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74 61 69 6e  nstances contain
19190 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ing..        ///
191a0 20 74 68 65 20 6e 65 77 20 6f 72 20 6d 6f 64 69   the new or modi
191b0 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  fied column valu
191c0 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  es, if any...   
191d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
191e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
191f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77 49  param name="rowI
19200 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  d">..        ///
19210 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
19220 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
19230 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
19240 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 75 6e  o contain the un
19250 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ique..        //
19260 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20 69 64  / integer row id
19270 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65  entifier for the
19280 20 72 6f 77 20 74 68 61 74 20 77 61 73 20 69 6e   row that was in
19290 73 65 72 74 65 64 2c 20 69 66 20 61 6e 79 2e 0d  serted, if any..
192a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
192b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
192c0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
192d0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
192e0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
192f0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
19300 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19310 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
19320 45 72 72 6f 72 43 6f 64 65 20 55 70 64 61 74 65  ErrorCode Update
19330 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
19340 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
19350 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a  e table, /* in *
19360 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  /..            S
19370 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
19380 75 65 73 2c 20 20 20 20 20 2f 2a 20 69 6e 20 2a  ues,     /* in *
19390 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
193a0 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 20 20 20  ef long rowId   
193b0 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
193c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
193d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19420 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19430 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19440 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
19450 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
19460 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
19470 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
19480 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
19490 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
194a0 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
194b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
194c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
194d0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
194e0 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
194f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
19500 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19510 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
19520 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19530 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
19540 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
19550 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
19560 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19570 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19580 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
19590 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
195a0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
195b0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
195c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
195d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
195e0 74 65 45 72 72 6f 72 43 6f 64 65 20 42 65 67 69  teErrorCode Begi
195f0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
19600 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
19610 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
19620 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
19630 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19680 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
19690 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
196a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
196b0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
196c0 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
196d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
196e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
196f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
19700 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64  xSync" /> method
19710 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19720 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
19730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
19740 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
19750 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
19760 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
19770 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
19780 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
19790 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
197a0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
197b0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
197c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
197d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
197e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
197f0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
19800 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
19810 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
19820 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
19830 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
19840 45 72 72 6f 72 43 6f 64 65 20 53 79 6e 63 28 0d  ErrorCode Sync(.
19850 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
19860 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
19870 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  table /* in */..
19880 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
19890 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
198a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
198f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
19900 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
19910 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
19920 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
19930 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
19940 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
19950 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
19960 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  mmit" /> method.
19970 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
19980 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
19990 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
199a0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
199b0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
199c0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
199d0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
199e0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
199f0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
19a00 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
19a10 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
19a20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19a30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19a40 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19a50 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19a60 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19a70 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19a80 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19a90 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19aa0 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d 69 74 28  rrorCode Commit(
19ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
19ac0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
19ad0 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d   table /* in */.
19ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
19af0 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
19b50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
19b60 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
19b70 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
19b80 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
19b90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
19ba0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
19bb0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
19bc0 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65 74 68  ollback" /> meth
19bd0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
19be0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
19bf0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
19c00 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
19c10 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
19c20 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
19c30 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
19c40 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
19c50 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
19c60 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
19c70 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
19c80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
19c90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
19ca0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
19cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
19cc0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
19cd0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
19ce0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
19cf0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
19d00 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c  teErrorCode Roll
19d10 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
19d20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
19d30 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
19d40 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
19d50 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
19d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19db0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
19dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
19dd0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
19de0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
19df0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
19e00 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
19e10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
19e20 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
19e30 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
19e40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19e50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19e60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
19e70 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
19e80 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
19e90 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
19ea0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
19eb0 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69   instance associ
19ec0 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ated..        //
19ed0 2f 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74  / with this virt
19ee0 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
19ef0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
19f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
19f10 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d  aram name="argum
19f20 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20  entCount">..    
19f30 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
19f40 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20  er of arguments 
19f50 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  to the function 
19f60 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20  being sought... 
19f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19f80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19f90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
19fa0 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  me">..        //
19fb0 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
19fc0 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
19fd0 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20 20 20 20   sought...      
19fe0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
19ff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1a000 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  am name="functio
1a010 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n">..        ///
1a020 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
1a030 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75  his parameter mu
1a040 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74  st be modified t
1a050 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a 20  o contain the.. 
1a060 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1a070 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63  cref="SQLiteFunc
1a080 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
1a090 69 6e 73 74 61 6e 63 65 20 72 65 73 70 6f 6e 73  instance respons
1a0a0 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20 20 20  ible for..      
1a0b0 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 69    /// implementi
1a0c0 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
1a0d0 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20   function...    
1a0e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a0f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1a100 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65  aram name="pClie
1a110 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  ntData">..      
1a120 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
1a130 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
1a140 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1a150 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
1a160 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a170 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74 61  native user-data
1a180 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61   pointer associa
1a190 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20  ted with..      
1a1a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66 20    /// <paramref 
1a1b0 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 20  name="function" 
1a1c0 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  />...        ///
1a1d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1a1e0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a1f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
1a200 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 70  n-zero if the sp
1a210 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f 6e  ecified function
1a220 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72 6f   was found; zero
1a230 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
1a240 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1a250 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  ns>..        boo
1a260 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d  l FindFunction(.
1a270 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1a280 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1a290 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20 69 6e 20  table,    /* in 
1a2a0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1a2b0 69 6e 74 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e  int argumentCoun
1a2c0 74 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  t,           /* 
1a2d0 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1a2e0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20     string name, 
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a300 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1a310 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
1a320 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f  Function functio
1a330 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20  n, /* out */..  
1a340 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
1a350 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
1a360 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
1a370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1a380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a3e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a3f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1a400 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1a410 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1a420 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a430 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1a440 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1a450 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
1a460 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1a470 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1a480 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a490 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1a4a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1a4b0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1a4c0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
1a4d0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1a4e0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1a4f0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
1a500 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
1a510 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a520 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1a530 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1a540 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  "newName">..    
1a550 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20      /// The new 
1a560 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 76 69 72  name for the vir
1a570 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1a580 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1a590 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1a5a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1a5b0 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1a5c0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1a5d0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1a5e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1a5f0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1a600 72 43 6f 64 65 20 52 65 6e 61 6d 65 28 0d 0a 20  rCode Rename(.. 
1a610 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1a620 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
1a630 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ble, /* in */.. 
1a640 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1a650 67 20 6e 65 77 4e 61 6d 65 20 20 20 20 20 20 20  g newName       
1a660 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
1a670 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1a680 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a6d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1a6e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1a6f0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1a700 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1a710 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1a720 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1a730 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1a740 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76  ativeModule.xSav
1a750 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f  epoint" /> metho
1a760 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1a770 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1a780 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a790 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
1a7a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
1a7b0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56  ee cref="SQLiteV
1a7c0 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20  irtualTable" /> 
1a7d0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1a7e0 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
1a7f0 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69      /// with thi
1a800 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  s virtual table.
1a810 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1a820 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1a830 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1a840 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20  "savepoint">..  
1a850 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
1a860 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65  s an integer ide
1a870 6e 74 69 66 69 65 72 20 75 6e 64 65 72 20 77 68  ntifier under wh
1a880 69 63 68 20 74 68 65 20 74 68 65 20 63 75 72 72  ich the the curr
1a890 65 6e 74 20 73 74 61 74 65 20 6f 66 0d 0a 20 20  ent state of..  
1a8a0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
1a8b0 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68 6f 75  rtual table shou
1a8c0 6c 64 20 62 65 20 73 61 76 65 64 2e 0d 0a 20 20  ld be saved...  
1a8d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a8e0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a8f0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1a900 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1a910 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1a920 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1a930 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1a940 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1a950 6f 72 43 6f 64 65 20 53 61 76 65 70 6f 69 6e 74  orCode Savepoint
1a960 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1a970 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1a980 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a  e table, /* in *
1a990 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  /..            i
1a9a0 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20 20 20  nt savepoint    
1a9b0 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
1a9c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1a9d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1aa30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1aa40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1aa50 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1aa60 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1aa70 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1aa80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1aa90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1aaa0 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
1aab0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1aac0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1aad0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1aae0 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1aaf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ab00 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1ab10 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1ab20 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1ab30 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1ab40 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1ab50 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1ab60 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1ab70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1ab80 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ab90 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
1aba0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1abb0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 75   is an integer u
1abc0 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65 20  sed to indicate 
1abd0 74 68 61 74 20 61 6e 79 20 73 61 76 65 64 20 73  that any saved s
1abe0 74 61 74 65 73 20 77 69 74 68 20 61 6e 0d 0a 20  tates with an.. 
1abf0 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74         /// ident
1ac00 69 66 69 65 72 20 67 72 65 61 74 65 72 20 74 68  ifier greater th
1ac10 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 74  an or equal to t
1ac20 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64 65  his should be de
1ac30 6c 65 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20  leted by the..  
1ac40 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
1ac50 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1ac60 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1ac70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1ac80 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1ac90 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1aca0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1acb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1acc0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1acd0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1ace0 64 65 20 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  de Release(..   
1acf0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
1ad00 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
1ad10 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  e, /* in */..   
1ad20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76           int sav
1ad30 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20 20 20  epoint          
1ad40 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1ad50 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1ad60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1adb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1adc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1add0 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1ade0 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1adf0 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1ae00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1ae10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1ae20 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
1ae30 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  ackTo" /> method
1ae40 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ae50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1ae60 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ae70 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
1ae80 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1ae90 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1aea0 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f  rtualTable" /> o
1aeb0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61  bject instance a
1aec0 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20  ssociated..     
1aed0 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73     /// with this
1aee0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
1aef0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1af00 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1af10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1af20 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20  savepoint">..   
1af30 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73       /// This is
1af40 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65 6e   an integer iden
1af50 74 69 66 69 65 72 20 75 73 65 64 20 74 6f 20 73  tifier used to s
1af60 70 65 63 69 66 79 20 61 20 73 70 65 63 69 66 69  pecify a specifi
1af70 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20 20  c saved..       
1af80 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20 74   /// state for t
1af90 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
1afa0 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74 6f   for it to resto
1afb0 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20 74  re itself back t
1afc0 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20 20  o, which..      
1afd0 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c 73    /// should als
1afe0 6f 20 68 61 76 65 20 74 68 65 20 65 66 66 65 63  o have the effec
1aff0 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61 6c  t of deleting al
1b000 6c 20 73 61 76 65 64 20 73 74 61 74 65 73 20 77  l saved states w
1b010 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ith an..        
1b020 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65 6e  /// integer iden
1b030 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20 74  tifier greater t
1b040 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a 20  han this one... 
1b050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1b060 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1b070 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1b080 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1b090 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1b0a0 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1b0b0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1b0c0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1b0d0 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62 61 63 6b  rorCode Rollback
1b0e0 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  To(..           
1b0f0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1b100 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e  ble table, /* in
1b110 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1b120 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 20   int savepoint  
1b130 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
1b140 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1b150 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20   );..    }..    
1b160 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1b170 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b1c0 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
1b1d0 69 74 65 4d 65 6d 6f 72 79 20 53 74 61 74 69 63  iteMemory Static
1b1e0 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
1b1f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1b200 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 63 6f  // This class co
1b210 6e 74 61 69 6e 73 20 73 74 61 74 69 63 20 6d 65  ntains static me
1b220 74 68 6f 64 73 20 74 68 61 74 20 61 72 65 20 75  thods that are u
1b230 73 65 64 20 74 6f 20 61 6c 6c 6f 63 61 74 65 2c  sed to allocate,
1b240 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 6e 69 70 75  ..    /// manipu
1b250 6c 61 74 65 2c 20 61 6e 64 20 66 72 65 65 20 6e  late, and free n
1b260 61 74 69 76 65 20 6d 65 6d 6f 72 79 20 70 72 6f  ative memory pro
1b270 76 69 64 65 64 20 62 79 20 74 68 65 20 53 51 4c  vided by the SQL
1b280 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1b290 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1b2a0 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
1b2b0 6e 61 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73  nal static class
1b2c0 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 0d 0a 20   SQLiteMemory.. 
1b2d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
1b2e0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
1b2f0 74 61 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d 45  ta..#if TRACK_ME
1b300 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20 20  MORY_BYTES..    
1b310 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b320 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b330 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
1b340 6e 63 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  nce is used to s
1b350 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65 73  ynchronize acces
1b360 73 20 74 6f 20 74 68 65 20 6f 74 68 65 72 0d 0a  s to the other..
1b370 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 61 74          /// stat
1b380 69 63 20 66 69 65 6c 64 73 20 6f 66 20 74 68 69  ic fields of thi
1b390 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
1b3a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1b3b0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1b3c0 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  e static object 
1b3d0 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
1b3e0 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  bject();....    
1b3f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1b440 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
1b450 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1b460 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  / The total numb
1b470 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e  er of outstandin
1b480 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20 61  g memory bytes a
1b490 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68 69 73  llocated by this
1b4a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6c  ..        /// cl
1b4b0 61 73 73 20 75 73 69 6e 67 20 74 68 65 20 53 51  ass using the SQ
1b4c0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1b4d0 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1b4e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1b4f0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1b500 69 63 20 69 6e 74 20 62 79 74 65 73 41 6c 6c 6f  ic int bytesAllo
1b510 63 61 74 65 64 3b 0d 0a 0d 0a 20 20 20 20 20 20  cated;....      
1b520 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b560 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b570 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b580 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b590 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62  The maximum numb
1b5a0 65 72 20 6f 66 20 6f 75 74 73 74 61 6e 64 69 6e  er of outstandin
1b5b0 67 20 6d 65 6d 6f 72 79 20 62 79 74 65 73 20 65  g memory bytes e
1b5c0 76 65 72 20 61 6c 6c 6f 63 61 74 65 64 20 62 79  ver allocated by
1b5d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1b5e0 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74  is class using t
1b5f0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
1b600 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1b610 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b620 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1b630 20 73 74 61 74 69 63 20 69 6e 74 20 6d 61 78 69   static int maxi
1b640 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63 61 74 65  mumBytesAllocate
1b650 64 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  d;..#endif..    
1b660 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1b670 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1b680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b6c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
1b6d0 67 69 6f 6e 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f  gion Memory Allo
1b6e0 63 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65  cation Helper Me
1b6f0 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
1b700 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1b710 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c 6f 63 61        /// Alloca
1b720 74 65 73 20 61 74 20 6c 65 61 73 74 20 74 68 65  tes at least the
1b730 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65   specified numbe
1b740 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20 6e 61  r of bytes of na
1b750 74 69 76 65 20 6d 65 6d 6f 72 79 0d 0a 20 20 20  tive memory..   
1b760 20 20 20 20 20 2f 2f 2f 20 76 69 61 20 74 68 65       /// via the
1b770 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
1b780 72 61 72 79 20 73 71 6c 69 74 65 33 5f 6d 61 6c  rary sqlite3_mal
1b790 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 20 61  loc() function a
1b7a0 6e 64 20 72 65 74 75 72 6e 73 0d 0a 20 20 20 20  nd returns..    
1b7b0 20 20 20 20 2f 2f 2f 20 74 68 65 20 72 65 73 75      /// the resu
1b7c0 6c 74 69 6e 67 20 6e 61 74 69 76 65 20 70 6f 69  lting native poi
1b7d0 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  nter...        /
1b7e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b7f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1b800 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a  m name="size">..
1b810 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1b820 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
1b830 74 6f 20 61 6c 6c 6f 63 61 74 65 2e 0d 0a 20 20  to allocate...  
1b840 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1b850 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1b860 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1b870 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1b880 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 70  e pointer that p
1b890 6f 69 6e 74 73 20 74 6f 20 61 20 62 6c 6f 63 6b  oints to a block
1b8a0 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74   of memory of at
1b8b0 20 6c 65 61 73 74 20 74 68 65 0d 0a 20 20 20 20   least the..    
1b8c0 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
1b8d0 64 20 73 69 7a 65 20 2d 4f 52 2d 20 3c 73 65 65  d size -OR- <see
1b8e0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
1b8f0 72 6f 22 20 2f 3e 20 69 66 20 74 68 65 20 6d 65  ro" /> if the me
1b900 6d 6f 72 79 20 63 6f 75 6c 64 0d 0a 20 20 20 20  mory could..    
1b910 20 20 20 20 2f 2f 2f 20 6e 6f 74 20 62 65 20 61      /// not be a
1b920 6c 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20  llocated...     
1b930 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1b940 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1b950 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 20  c static IntPtr 
1b960 41 6c 6c 6f 63 61 74 65 28 69 6e 74 20 73 69 7a  Allocate(int siz
1b970 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
1b980 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1b990 72 20 70 4d 65 6d 6f 72 79 20 3d 20 55 6e 73 61  r pMemory = Unsa
1b9a0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
1b9b0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 73  sqlite3_malloc(s
1b9c0 69 7a 65 29 3b 0d 0a 0d 0a 23 69 66 20 54 52 41  ize);....#if TRA
1b9d0 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d  CK_MEMORY_BYTES.
1b9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1b9f0 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e 74 50  (pMemory != IntP
1ba00 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1ba10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ba20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62 6c 6f           int blo
1ba30 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28 70 4d  ckSize = Size(pM
1ba40 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  emory);....     
1ba50 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
1ba60 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d 0a 20  lockSize > 0).. 
1ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ba80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ba90 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63        lock (sync
1baa0 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20  Root)..         
1bab0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bad0 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c 6f 63        bytesAlloc
1bae0 61 74 65 64 20 2b 3d 20 62 6c 6f 63 6b 53 69 7a  ated += blockSiz
1baf0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1bb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1bb10 20 28 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64   (bytesAllocated
1bb20 20 3e 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41   > maximumBytesA
1bb30 6c 6c 6f 63 61 74 65 64 29 0d 0a 20 20 20 20 20  llocated)..     
1bb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb50 20 20 20 20 20 20 20 6d 61 78 69 6d 75 6d 42 79         maximumBy
1bb60 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3d 20 62  tesAllocated = b
1bb70 79 74 65 73 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a  ytesAllocated;..
1bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1bba0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1bbb0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1bbc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1bbd0 65 74 75 72 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a  eturn pMemory;..
1bbe0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1bbf0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1bc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1bc40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1bc50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1bc60 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
1bc70 72 6e 73 20 74 68 65 20 61 63 74 75 61 6c 20 73  rns the actual s
1bc80 69 7a 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  ize of the speci
1bc90 66 69 65 64 20 6d 65 6d 6f 72 79 20 62 6c 6f 63  fied memory bloc
1bca0 6b 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  k that..        
1bcb0 2f 2f 2f 20 77 61 73 20 70 72 65 76 69 6f 75 73  /// was previous
1bcc0 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1bcd0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
1bce0 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20 6d 65 74  Allocate" /> met
1bcf0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1bd00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1bd10 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1bd20 20 6e 61 6d 65 3d 22 70 4d 65 6d 6f 72 79 22 3e   name="pMemory">
1bd30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1bd40 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
1bd50 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 62   to the memory b
1bd60 6c 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20  lock previously 
1bd70 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
1bd80 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1bd90 73 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61  see cref="Alloca
1bda0 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
1bdb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1bdc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1bdd0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1bde0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74       /// The act
1bdf0 75 61 6c 20 73 69 7a 65 2c 20 69 6e 20 62 79 74  ual size, in byt
1be00 65 73 2c 20 6f 66 20 74 68 65 20 6d 65 6d 6f 72  es, of the memor
1be10 79 20 62 6c 6f 63 6b 20 73 70 65 63 69 66 69 65  y block specifie
1be20 64 20 76 69 61 20 74 68 65 0d 0a 20 20 20 20 20  d via the..     
1be30 20 20 20 2f 2f 2f 20 6e 61 74 69 76 65 20 70 6f     /// native po
1be40 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  inter...        
1be50 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1be60 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1be70 74 61 74 69 63 20 69 6e 74 20 53 69 7a 65 28 49  tatic int Size(I
1be80 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a  ntPtr pMemory)..
1be90 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
1bea0 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
1beb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1bec0 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65  urn UnsafeNative
1bed0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
1bee0 6d 61 6c 6c 6f 63 5f 73 69 7a 65 5f 69 6e 74 65  malloc_size_inte
1bef0 72 6f 70 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23  rop(pMemory);..#
1bf00 65 6c 69 66 20 54 52 41 43 4b 5f 4d 45 4d 4f 52  elif TRACK_MEMOR
1bf10 59 5f 42 59 54 45 53 0d 0a 20 20 20 20 20 20 20  Y_BYTES..       
1bf20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1bf30 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f 6b       // HACK: Ok
1bf40 2c 20 77 65 20 63 61 6e 6e 6f 74 20 64 65 74 65  , we cannot dete
1bf50 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20 6f  rmine the size o
1bf60 66 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 6c 6f  f the memory blo
1bf70 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck;..           
1bf80 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65 66   //       theref
1bf90 6f 72 65 2c 20 6a 75 73 74 20 74 72 61 63 6b 20  ore, just track 
1bfa0 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63 61  number of alloca
1bfb0 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e 0d 0a  tions instead...
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bfe0 72 6e 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49  rn (pMemory != I
1bff0 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 20 31 20  ntPtr.Zero) ? 1 
1c000 3a 20 30 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  : 0;..#else..   
1c010 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c020 30 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  0;..#endif..    
1c030 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c040 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c080 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c090 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c0a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 46  >..        /// F
1c0b0 72 65 65 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c  rees a memory bl
1c0c0 6f 63 6b 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ock previously o
1c0d0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
1c0e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c0f0 65 65 20 63 72 65 66 3d 22 41 6c 6c 6f 63 61 74  ee cref="Allocat
1c100 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
1c110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c120 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c130 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c140 70 4d 65 6d 6f 72 79 22 3e 0d 0a 20 20 20 20 20  pMemory">..     
1c150 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1c160 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1c170 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 20 70 72   memory block pr
1c180 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
1c190 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
1c1a0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1c1b0 66 3d 22 41 6c 6c 6f 63 61 74 65 22 20 2f 3e 20  f="Allocate" /> 
1c1c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1c1d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c1e0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1c1f0 61 74 69 63 20 76 6f 69 64 20 46 72 65 65 28 49  atic void Free(I
1c200 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29 0d 0a  ntPtr pMemory)..
1c210 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
1c220 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45  RACK_MEMORY_BYTE
1c230 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  S..            i
1c240 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20 49 6e  f (pMemory != In
1c250 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1c260 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1c270 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 62             int b
1c280 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a 65 28  lockSize = Size(
1c290 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  pMemory);....   
1c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1c2b0 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30 29 0d  (blockSize > 0).
1c2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c2d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c2e0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
1c2f0 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
1c300 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1c310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c320 20 20 20 20 20 20 20 20 62 79 74 65 73 41 6c 6c          bytesAll
1c330 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63 6b 53  ocated -= blockS
1c340 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ize;..          
1c350 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1c360 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c370 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23              }..#
1c380 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
1c390 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
1c3a0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
1c3b0 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29 3b 0d  _free(pMemory);.
1c3c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1c3d0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c3e0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1c3f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1c400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c440 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c450 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74  #region SQLiteSt
1c460 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c 61 73  ring Static Clas
1c470 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
1c480 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
1c490 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e  is class contain
1c4a0 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 73  s static methods
1c4b0 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 74   that are used t
1c4c0 6f 20 64 65 61 6c 20 77 69 74 68 20 6e 61 74 69  o deal with nati
1c4d0 76 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 54 46 2d  ve..    /// UTF-
1c4e0 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72  8 string pointer
1c4f0 73 20 74 6f 20 62 65 20 75 73 65 64 20 77 69 74  s to be used wit
1c500 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  h the SQLite cor
1c510 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1c520 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c530 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1c540 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65  tic class SQLite
1c550 53 74 72 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20  String..    {.. 
1c560 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1c570 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
1c580 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c590 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1c5a0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
1c5b0 20 6d 61 78 69 6d 75 6d 20 70 6f 73 73 69 62 6c   maximum possibl
1c5c0 65 20 6c 65 6e 67 74 68 20 66 6f 72 20 74 68 65  e length for the
1c5d0 20 6e 61 74 69 76 65 20 55 54 46 2d 38 20 65 6e   native UTF-8 en
1c5e0 63 6f 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  coded..        /
1c5f0 2f 2f 20 73 74 72 69 6e 67 73 20 75 73 65 64 20  // strings used 
1c600 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 20  with the SQLite 
1c610 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20  core library... 
1c620 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1c630 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1c640 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
1c650 74 20 54 68 69 72 74 79 42 69 74 73 20 3d 20 30  t ThirtyBits = 0
1c660 78 33 66 66 66 66 66 66 66 3b 0d 0a 0d 0a 20 20  x3fffffff;....  
1c670 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c6c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1c6d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c6e0 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
1c6f0 3c 73 65 65 20 63 72 65 66 3d 22 45 6e 63 6f 64  <see cref="Encod
1c700 69 6e 67 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ing" /> object i
1c710 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20  nstance used to 
1c720 68 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20  handle..        
1c730 2f 2f 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20  /// conversions 
1c740 66 72 6f 6d 2f 74 6f 20 55 54 46 2d 38 2e 0d 0a  from/to UTF-8...
1c750 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1c760 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c770 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
1c780 65 61 64 6f 6e 6c 79 20 45 6e 63 6f 64 69 6e 67  eadonly Encoding
1c790 20 55 74 66 38 45 6e 63 6f 64 69 6e 67 20 3d 20   Utf8Encoding = 
1c7a0 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 3b 0d 0a  Encoding.UTF8;..
1c7b0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1c7c0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1c7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c810 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c820 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 45   #region UTF-8 E
1c830 6e 63 6f 64 69 6e 67 20 48 65 6c 70 65 72 20 4d  ncoding Helper M
1c840 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
1c850 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1c860 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1c870 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
1c880 64 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67  d managed string
1c890 20 69 6e 74 6f 20 74 68 65 20 55 54 46 2d 38 20   into the UTF-8 
1c8a0 65 6e 63 6f 64 69 6e 67 20 61 6e 64 0d 0a 20 20  encoding and..  
1c8b0 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
1c8c0 73 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 62  s the array of b
1c8d0 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ytes containing 
1c8e0 69 74 73 20 72 65 70 72 65 73 65 6e 74 61 74 69  its representati
1c8f0 6f 6e 20 69 6e 20 74 68 61 74 0d 0a 20 20 20 20  on in that..    
1c900 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 69 6e 67      /// encoding
1c910 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1c920 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
1c930 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1c940 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
1c950 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e       /// The man
1c960 61 67 65 64 20 73 74 72 69 6e 67 20 74 6f 20 63  aged string to c
1c970 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1c980 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c990 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1c9a0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1c9b0 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 62  / The array of b
1c9c0 79 74 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ytes containing 
1c9d0 74 68 65 20 72 65 70 72 65 73 65 6e 74 61 74 69  the representati
1c9e0 6f 6e 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65  on of the manage
1c9f0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  d..        /// s
1ca00 74 72 69 6e 67 20 69 6e 20 74 68 65 20 55 54 46  tring in the UTF
1ca10 2d 38 20 65 6e 63 6f 64 69 6e 67 20 6f 72 20 6e  -8 encoding or n
1ca20 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  ull upon failure
1ca30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ca40 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1ca50 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1ca60 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38 42   byte[] GetUtf8B
1ca70 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 0d  ytesFromString(.
1ca80 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
1ca90 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
1caa0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1cab0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cac0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1cad0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1cae0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1caf0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cb00 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f   return Utf8Enco
1cb10 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76 61  ding.GetBytes(va
1cb20 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lue);..        }
1cb30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1cb90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1cba0 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72        /// Conver
1cbb0 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
1cbc0 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20   array of bytes 
1cbd0 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 73  representing a s
1cbe0 74 72 69 6e 67 20 69 6e 20 74 68 65 0d 0a 20 20  tring in the..  
1cbf0 20 20 20 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20        /// UTF-8 
1cc00 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 72 65 74  encoding and ret
1cc10 75 72 6e 73 20 61 20 6d 61 6e 61 67 65 64 20 73  urns a managed s
1cc20 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
1cc30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1cc40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1cc50 61 6d 20 6e 61 6d 65 3d 22 62 79 74 65 73 22 3e  am name="bytes">
1cc60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1cc70 65 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73  e array of bytes
1cc80 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
1cc90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cca0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1ccb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1ccc0 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67     /// The manag
1ccd0 65 64 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c  ed string or nul
1cce0 6c 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  l upon failure..
1ccf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1cd00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1cd10 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
1cd20 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 46  tring GetStringF
1cd30 72 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a 20  romUtf8Bytes(.. 
1cd40 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
1cd50 5d 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20 20  ] bytes..       
1cd60 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1cd70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1cd80 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c  f (bytes == null
1cd90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cda0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
1cdb0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1cdc0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1cdd0 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  K..            r
1cde0 65 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69  eturn Utf8Encodi
1cdf0 6e 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74  ng.GetString(byt
1ce00 65 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  es);..#else..   
1ce10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ce20 55 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74  Utf8Encoding.Get
1ce30 53 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30 2c  String(bytes, 0,
1ce40 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d   bytes.Length);.
1ce50 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
1ce60 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
1ce70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
1ce80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ceb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ced0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46       #region UTF
1cee0 2d 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65 72  -8 String Helper
1cef0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
1cf00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1cf10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f  .        /// Pro
1cf20 62 65 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  bes a native poi
1cf30 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67  nter to a string
1cf40 20 69 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e   in the UTF-8 en
1cf50 63 6f 64 69 6e 67 20 66 6f 72 20 69 74 73 0d 0a  coding for its..
1cf60 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 65 72 6d          /// term
1cf70 69 6e 61 74 69 6e 67 20 4e 55 4c 20 63 68 61 72  inating NUL char
1cf80 61 63 74 65 72 2c 20 77 69 74 68 69 6e 20 74 68  acter, within th
1cf90 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1cfa0 74 68 20 6c 69 6d 69 74 2e 0d 0a 20 20 20 20 20  th limit...     
1cfb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1cfc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1cfd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 61 6c  param name="pVal
1cfe0 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ue">..        //
1cff0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 4e 55 4c  / The native NUL
1d000 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69  -terminated stri
1d010 6e 67 20 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20  ng pointer...   
1d020 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1d030 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1d040 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 69 6d 69  param name="limi
1d050 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
1d060 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e   The maximum len
1d070 67 74 68 20 6f 66 20 74 68 65 20 6e 61 74 69 76  gth of the nativ
1d080 65 20 73 74 72 69 6e 67 2c 20 69 6e 20 62 79 74  e string, in byt
1d090 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
1d0a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1d0b0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1d0c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d0d0 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
1d0e0 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69  native string, i
1d0f0 6e 20 62 79 74 65 73 20 2d 4f 52 2d 20 7a 65 72  n bytes -OR- zer
1d100 6f 20 69 66 20 74 68 65 20 6c 65 6e 67 74 68 0d  o if the length.
1d110 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 75  .        /// cou
1d120 6c 64 20 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  ld not be determ
1d130 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ined...        /
1d140 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1d150 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1d160 61 74 69 63 20 69 6e 74 20 50 72 6f 62 65 46 6f  atic int ProbeFo
1d170 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74 68 28  rUtf8ByteLength(
1d180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1d190 74 50 74 72 20 70 56 61 6c 75 65 2c 0d 0a 20 20  tPtr pValue,..  
1d1a0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 69            int li
1d1b0 6d 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mit..           
1d1c0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1d1d0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1d1e0 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 0d 0a 20 20  ength = 0;....  
1d1f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 70            if ((p
1d200 56 61 6c 75 65 20 21 3d 20 49 6e 74 50 74 72 2e  Value != IntPtr.
1d210 5a 65 72 6f 29 20 26 26 20 28 6c 69 6d 69 74 20  Zero) && (limit 
1d220 3e 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  > 0))..         
1d230 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d240 20 20 20 20 20 20 64 6f 0d 0a 20 20 20 20 20 20        do..      
1d250 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d270 20 69 66 20 28 4d 61 72 73 68 61 6c 2e 52 65 61   if (Marshal.Rea
1d280 64 42 79 74 65 28 70 56 61 6c 75 65 2c 20 6c 65  dByte(pValue, le
1d290 6e 67 74 68 29 20 3d 3d 20 30 29 0d 0a 20 20 20  ngth) == 0)..   
1d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2b0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20       break;.... 
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2d0 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3e 3d     if (length >=
1d2e0 20 6c 69 6d 69 74 29 0d 0a 20 20 20 20 20 20 20   limit)..       
1d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d300 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20   break;....     
1d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1d320 65 6e 67 74 68 2b 2b 3b 0d 0a 20 20 20 20 20 20  ength++;..      
1d330 20 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c            } whil
1d340 65 20 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  e (true);..     
1d350 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1d360 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
1d370 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  ength;..        
1d380 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1d390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d3d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1d3e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d3f0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1d400 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
1d410 64 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72  d native NUL-ter
1d420 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
1d430 72 69 6e 67 20 70 6f 69 6e 74 65 72 0d 0a 20 20  ring pointer..  
1d440 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 6f 20 61        /// into a
1d450 20 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e   managed string.
1d460 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1d470 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d480 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1d490 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20  e="pValue">..   
1d4a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1d4b0 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74  ive NUL-terminat
1d4c0 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
1d4d0 70 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20  pointer...      
1d4e0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d4f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1d500 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1d510 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1d520 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
1d530 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
1d540 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1d550 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1d560 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
1d570 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g StringFromUtf8
1d580 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
1d590 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
1d5a0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
1d5b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1d5c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1d5d0 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 49   StringFromUtf8I
1d5e0 6e 74 50 74 72 28 70 56 61 6c 75 65 2c 0d 0a 20  ntPtr(pValue,.. 
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
1d600 72 6f 62 65 46 6f 72 55 74 66 38 42 79 74 65 4c  robeForUtf8ByteL
1d610 65 6e 67 74 68 28 70 56 61 6c 75 65 2c 20 54 68  ength(pValue, Th
1d620 69 72 74 79 42 69 74 73 29 29 3b 0d 0a 20 20 20  irtyBits));..   
1d630 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1d640 20 20 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 2f 2f  ////////////////
1d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1d690 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1d6a0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1d6b0 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70 65  Converts the spe
1d6c0 63 69 66 69 65 64 20 6e 61 74 69 76 65 20 55 54  cified native UT
1d6d0 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1d6e0 65 72 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  er of the specif
1d6f0 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ied..        ///
1d700 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d   length into a m
1d710 61 6e 61 67 65 64 20 73 74 72 69 6e 67 2e 0d 0a  anaged string...
1d720 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d730 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d740 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1d750 22 70 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  "pValue">..     
1d760 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
1d770 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70  e UTF-8 string p
1d780 6f 69 6e 74 65 72 2e 0d 0a 20 20 20 20 20 20 20  ointer...       
1d790 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d7a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1d7b0 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e  m name="length">
1d7c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d7d0 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
1d7e0 6e 61 74 69 76 65 20 73 74 72 69 6e 67 2c 20 69  native string, i
1d7f0 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20  n bytes...      
1d800 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1d810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1d820 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1d830 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20 73  // The managed s
1d840 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20 75 70  tring or null up
1d850 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
1d860 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1d870 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
1d880 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
1d890 67 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g StringFromUtf8
1d8a0 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
1d8b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c       IntPtr pVal
1d8c0 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
1d8d0 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20   int length..   
1d8e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1d8f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d900 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d     if (pValue ==
1d910 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1d930 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
1d940 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c             if (l
1d950 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
1d960 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d970 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
1d980 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62 79  ] bytes = new by
1d990 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20  te[length];.... 
1d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
1d9b0 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61 6c  arshal.Copy(pVal
1d9c0 75 65 2c 20 62 79 74 65 73 2c 20 30 2c 20 6c 65  ue, bytes, 0, le
1d9d0 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth);....      
1d9e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1d9f0 20 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 55 74   GetStringFromUt
1da00 66 38 42 79 74 65 73 28 62 79 74 65 73 29 3b 0d  f8Bytes(bytes);.
1da10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1da20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1da30 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
1da40 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  y;..        }...
1da50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1da60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1daa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1dab0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1dac0 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
1dad0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 61  the specified ma
1dae0 6e 61 67 65 64 20 73 74 72 69 6e 67 20 69 6e 74  naged string int
1daf0 6f 20 61 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74  o a native NUL-t
1db00 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20  erminated..     
1db10 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
1db20 69 6e 67 20 70 6f 69 6e 74 65 72 20 75 73 69 6e  ing pointer usin
1db30 67 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65  g memory obtaine
1db40 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  d from the SQLit
1db50 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20  e core..        
1db60 2f 2f 2f 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  /// library...  
1db70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1db80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1db90 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1dba0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1dbb0 2f 2f 2f 20 54 68 65 20 6d 61 6e 61 67 65 64 20  /// The managed 
1dbc0 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72  string to conver
1dbd0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1dbe0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1dbf0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1dc00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1dc10 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d   native NUL-term
1dc20 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72  inated UTF-8 str
1dc30 69 6e 67 20 70 6f 69 6e 74 65 72 20 6f 72 0d 0a  ing pointer or..
1dc40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1dc50 20 63 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65   cref="IntPtr.Ze
1dc60 72 6f 22 20 2f 3e 20 75 70 6f 6e 20 66 61 69 6c  ro" /> upon fail
1dc70 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1dc80 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1dc90 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1dca0 74 69 63 20 49 6e 74 50 74 72 20 55 74 66 38 49  tic IntPtr Utf8I
1dcb0 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
1dcc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1dcd0 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
1dce0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1dcf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1dd00 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1dd10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1dd20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74        return Int
1dd30 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
1dd40 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
1dd50 72 65 73 75 6c 74 20 3d 20 49 6e 74 50 74 72 2e  result = IntPtr.
1dd60 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
1dd70 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 73 20     byte[] bytes 
1dd80 3d 20 47 65 74 55 74 66 38 42 79 74 65 73 46 72  = GetUtf8BytesFr
1dd90 6f 6d 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b  omString(value);
1dda0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ddb0 69 66 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c  if (bytes == nul
1ddc0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1ddd0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
1dde0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
1ddf0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
1de00 68 20 3d 20 62 79 74 65 73 2e 4c 65 6e 67 74 68  h = bytes.Length
1de10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1de20 20 72 65 73 75 6c 74 20 3d 20 53 51 4c 69 74 65   result = SQLite
1de30 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28  Memory.Allocate(
1de40 6c 65 6e 67 74 68 20 2b 20 31 29 3b 0d 0a 0d 0a  length + 1);....
1de50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1de60 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72  result == IntPtr
1de70 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1de80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1de90 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
1dea0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
1deb0 61 6c 2e 43 6f 70 79 28 62 79 74 65 73 2c 20 30  al.Copy(bytes, 0
1dec0 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68  , result, length
1ded0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1dee0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 42 79 74  Marshal.WriteByt
1def0 65 28 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68  e(result, length
1df00 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  , 0);....       
1df10 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
1df20 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
1df30 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1df40 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1df50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1df90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1dfa0 20 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 53   #region UTF-8 S
1dfb0 74 72 69 6e 67 20 41 72 72 61 79 20 48 65 6c 70  tring Array Help
1dfc0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1dfd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1dfe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43  >..        /// C
1dff0 6f 6e 76 65 72 74 73 20 61 20 6c 6f 67 69 63 61  onverts a logica
1e000 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
1e010 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64  e NUL-terminated
1e020 20 55 54 46 2d 38 20 73 74 72 69 6e 67 0d 0a 20   UTF-8 string.. 
1e030 20 20 20 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74         /// point
1e040 65 72 73 20 69 6e 74 6f 20 61 6e 20 61 72 72 61  ers into an arra
1e050 79 20 6f 66 20 6d 61 6e 61 67 65 64 20 73 74 72  y of managed str
1e060 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ings...        /
1e070 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e080 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e090 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a  m name="argc">..
1e0a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1e0b0 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e  number of elemen
1e0c0 74 73 20 69 6e 20 74 68 65 20 6c 6f 67 69 63 61  ts in the logica
1e0d0 6c 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69 76  l array of nativ
1e0e0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  e..        /// N
1e0f0 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  UL-terminated UT
1e100 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e 74  F-8 string point
1e110 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ers...        //
1e120 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e130 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e140 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
1e150 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
1e160 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
1e170 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72 61 79  he logical array
1e180 20 6f 66 20 6e 61 74 69 76 65 20 4e 55 4c 2d 74   of native NUL-t
1e190 65 72 6d 69 6e 61 74 65 64 0d 0a 20 20 20 20 20  erminated..     
1e1a0 20 20 20 2f 2f 2f 20 55 54 46 2d 38 20 73 74 72     /// UTF-8 str
1e1b0 69 6e 67 20 70 6f 69 6e 74 65 72 73 20 74 6f 20  ing pointers to 
1e1c0 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20  convert...      
1e1d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1e1e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1e1f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1e200 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
1e210 6d 61 6e 61 67 65 64 20 73 74 72 69 6e 67 73 20  managed strings 
1e220 6f 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69  or null upon fai
1e230 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lure...        /
1e240 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1e250 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1e260 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 74  atic string[] St
1e270 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66  ringArrayFromUtf
1e280 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 0d  8SizeAndIntPtr(.
1e290 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
1e2a0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
1e2b0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 0d      IntPtr argv.
1e2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
1e2d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e2e0 20 20 20 20 20 20 20 69 66 20 28 61 72 67 63 20         if (argc 
1e2f0 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  < 0)..          
1e300 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1e310 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1e320 20 20 69 66 20 28 61 72 67 76 20 3d 3d 20 49 6e    if (argv == In
1e330 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
1e340 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1e350 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
1e360 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
1e370 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 73 74   result = new st
1e380 72 69 6e 67 5b 61 72 67 63 5d 3b 0d 0a 0d 0a 20  ring[argc];.... 
1e390 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
1e3a0 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 2c 20 6f  int index = 0, o
1e3b0 66 66 73 65 74 20 3d 20 30 3b 0d 0a 20 20 20 20  ffset = 0;..    
1e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3d0 69 6e 64 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c  index < result.L
1e3e0 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  ength;..        
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
1e400 78 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 49  x++, offset += I
1e410 6e 74 50 74 72 2e 53 69 7a 65 29 0d 0a 20 20 20  ntPtr.Size)..   
1e420 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e430 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1e440 74 72 20 70 41 72 67 20 3d 20 53 51 4c 69 74 65  tr pArg = SQLite
1e450 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
1e460 74 72 28 61 72 67 76 2c 20 6f 66 66 73 65 74 29  tr(argv, offset)
1e470 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e480 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65       result[inde
1e490 78 5d 20 3d 20 28 70 41 72 67 20 21 3d 20 49 6e  x] = (pArg != In
1e4a0 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20  tPtr.Zero) ?..  
1e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4c0 20 20 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38    StringFromUtf8
1e4d0 49 6e 74 50 74 72 28 70 41 72 67 29 20 3a 20 6e  IntPtr(pArg) : n
1e4e0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
1e4f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1e500 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
1e510 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1e520 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1e530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1e570 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1e580 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1e590 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1e5a0 6e 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67  n array of manag
1e5b0 65 64 20 73 74 72 69 6e 67 73 20 69 6e 74 6f 20  ed strings into 
1e5c0 61 6e 20 61 72 72 61 79 20 6f 66 20 6e 61 74 69  an array of nati
1e5d0 76 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ve..        /// 
1e5e0 4e 55 4c 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  NUL-terminated U
1e5f0 54 46 2d 38 20 73 74 72 69 6e 67 20 70 6f 69 6e  TF-8 string poin
1e600 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ters...        /
1e610 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e620 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e630 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e  m name="values">
1e640 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1e650 65 20 61 72 72 61 79 20 6f 66 20 6d 61 6e 61 67  e array of manag
1e660 65 64 20 73 74 72 69 6e 67 73 20 74 6f 20 63 6f  ed strings to co
1e670 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20 20  nvert...        
1e680 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1e690 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1e6a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1e6b0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 6e 61   The array of na
1e6c0 74 69 76 65 20 4e 55 4c 2d 74 65 72 6d 69 6e 61  tive NUL-termina
1e6d0 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
1e6e0 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 6e 75 6c   pointers or nul
1e6f0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  l..        /// u
1e700 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20  pon failure...  
1e710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1e720 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
1e730 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
1e740 74 72 5b 5d 20 55 74 66 38 49 6e 74 50 74 72 41  tr[] Utf8IntPtrA
1e750 72 72 61 79 46 72 6f 6d 53 74 72 69 6e 67 41 72  rrayFromStringAr
1e760 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ray(..          
1e770 20 20 73 74 72 69 6e 67 5b 5d 20 76 61 6c 75 65    string[] value
1e780 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
1e790 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1e7a0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
1e7b0 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ues == null)..  
1e7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e7d0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1e7e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
1e7f0 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  [] result = new 
1e800 49 6e 74 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65  IntPtr[values.Le
1e810 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
1e820 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
1e830 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
1e840 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b  < result.Length;
1e850 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
1e860 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
1e870 74 5b 69 6e 64 65 78 5d 20 3d 20 55 74 66 38 49  t[index] = Utf8I
1e880 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28  ntPtrFromString(
1e890 76 61 6c 75 65 73 5b 69 6e 64 65 78 5d 29 3b 0d  values[index]);.
1e8a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1e8b0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
1e8c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e8d0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
1e8e0 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
1e8f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
1e900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e940 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
1e950 65 67 69 6f 6e 20 53 51 4c 69 74 65 42 79 74 65  egion SQLiteByte
1e960 73 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a  s Static Class..
1e970 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1e980 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
1e990 63 6c 61 73 73 20 63 6f 6e 74 61 69 6e 73 20 73  class contains s
1e9a0 74 61 74 69 63 20 6d 65 74 68 6f 64 73 20 74 68  tatic methods th
1e9b0 61 74 20 61 72 65 20 75 73 65 64 20 74 6f 20 64  at are used to d
1e9c0 65 61 6c 20 77 69 74 68 20 6e 61 74 69 76 65 0d  eal with native.
1e9d0 0a 20 20 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72  .    /// pointer
1e9e0 73 20 74 6f 20 6d 65 6d 6f 72 79 20 62 6c 6f 63  s to memory bloc
1e9f0 6b 73 20 74 68 61 74 20 6c 6f 67 69 63 61 6c 6c  ks that logicall
1ea00 79 20 63 6f 6e 74 61 69 6e 20 61 72 72 61 79 73  y contain arrays
1ea10 20 6f 66 20 62 79 74 65 73 20 74 6f 20 62 65 0d   of bytes to be.
1ea20 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 77 69  .    /// used wi
1ea30 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
1ea40 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1ea50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ea60 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
1ea70 61 74 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  atic class SQLit
1ea80 65 42 79 74 65 73 0d 0a 20 20 20 20 7b 0d 0a 20  eBytes..    {.. 
1ea90 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 42         #region B
1eaa0 79 74 65 20 41 72 72 61 79 20 48 65 6c 70 65 72  yte Array Helper
1eab0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
1eac0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1ead0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
1eae0 76 65 72 74 73 20 61 20 6e 61 74 69 76 65 20 70  verts a native p
1eaf0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c 6f 67 69  ointer to a logi
1eb00 63 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74  cal array of byt
1eb10 65 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  es of the..     
1eb20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64     /// specified
1eb30 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 6d   length into a m
1eb40 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
1eb50 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1eb60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1eb70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1eb80 61 6d 65 3d 22 70 56 61 6c 75 65 22 3e 0d 0a 20  ame="pValue">.. 
1eb90 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1eba0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
1ebb0 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 61 72 72   the logical arr
1ebc0 61 79 20 6f 66 20 62 79 74 65 73 20 74 6f 20 63  ay of bytes to c
1ebd0 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 20 20 20  onvert...       
1ebe0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ebf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ec00 6d 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e  m name="length">
1ec10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1ec20 65 20 6c 65 6e 67 74 68 2c 20 69 6e 20 62 79 74  e length, in byt
1ec30 65 73 2c 20 6f 66 20 74 68 65 20 6c 6f 67 69 63  es, of the logic
1ec40 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  al array of byte
1ec50 73 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  s to convert... 
1ec60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ec70 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ec80 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1ec90 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
1eca0 67 65 64 20 62 79 74 65 20 61 72 72 61 79 20 6f  ged byte array o
1ecb0 72 20 6e 75 6c 6c 20 75 70 6f 6e 20 66 61 69 6c  r null upon fail
1ecc0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
1ecd0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1ece0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1ecf0 74 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d 49  tic byte[] FromI
1ed00 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
1ed10 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75      IntPtr pValu
1ed20 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1ed30 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20  int length..    
1ed40 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1ed50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ed60 20 20 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20    if (pValue == 
1ed70 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ed90 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
1eda0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
1edb0 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
1edc0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1edd0 72 6e 20 6e 65 77 20 62 79 74 65 5b 30 5d 3b 0d  rn new byte[0];.
1ede0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ...            b
1edf0 79 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e  yte[] result = n
1ee00 65 77 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b  ew byte[length];
1ee10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ee20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 70 56 61  Marshal.Copy(pVa
1ee30 6c 75 65 2c 20 72 65 73 75 6c 74 2c 20 30 2c 20  lue, result, 0, 
1ee40 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20  length);....    
1ee50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
1ee60 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
1ee70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eec0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1eed0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1eee0 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65         /// Conve
1eef0 72 74 73 20 61 20 6d 61 6e 61 67 65 64 20 62 79  rts a managed by
1ef00 74 65 20 61 72 72 61 79 20 69 6e 74 6f 20 61 20  te array into a 
1ef10 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
1ef20 6f 20 61 20 6c 6f 67 69 63 61 6c 0d 0a 20 20 20  o a logical..   
1ef30 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 20 6f       /// array o
1ef40 66 20 62 79 74 65 73 2e 0d 0a 20 20 20 20 20 20  f bytes...      
1ef50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1ef60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1ef70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
1ef80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1ef90 54 68 65 20 6d 61 6e 61 67 65 64 20 62 79 74 65  The managed byte
1efa0 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65 72   array to conver
1efb0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
1efc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1efd0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1efe0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1eff0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1f000 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79 74  to a logical byt
1f010 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20  e array or null 
1f020 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1f030 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1f040 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1f050 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1f060 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20  Ptr ToIntPtr(.. 
1f070 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
1f080 5d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  ] value..       
1f090 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1f0a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
1f0b0 6e 74 20 6c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a  nt length = 0;..
1f0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f0d0 74 75 72 6e 20 54 6f 49 6e 74 50 74 72 28 76 61  turn ToIntPtr(va
1f0e0 6c 75 65 2c 20 72 65 66 20 6c 65 6e 67 74 68 29  lue, ref length)
1f0f0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1f100 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1f110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1f150 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1f170 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1f180 20 6d 61 6e 61 67 65 64 20 62 79 74 65 20 61 72   managed byte ar
1f190 72 61 79 20 69 6e 74 6f 20 61 20 6e 61 74 69 76  ray into a nativ
1f1a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6c  e pointer to a l
1f1b0 6f 67 69 63 61 6c 0d 0a 20 20 20 20 20 20 20 20  ogical..        
1f1c0 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20 62 79 74  /// array of byt
1f1d0 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  es...        ///
1f1e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1f1f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1f200 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
1f210 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d         /// The m
1f220 61 6e 61 67 65 64 20 62 79 74 65 20 61 72 72 61  anaged byte arra
1f230 79 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20  y to convert... 
1f240 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f250 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f260 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65   <param name="le
1f270 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20 20 20  ngth">..        
1f280 2f 2f 2f 20 54 68 65 20 6c 65 6e 67 74 68 2c 20  /// The length, 
1f290 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68 65  in bytes, of the
1f2a0 20 63 6f 6e 76 65 72 74 65 64 20 6c 6f 67 69 63   converted logic
1f2b0 61 6c 20 61 72 72 61 79 20 6f 66 20 62 79 74 65  al array of byte
1f2c0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
1f2d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f2e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1f2f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f300 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
1f310 74 6f 20 61 20 6c 6f 67 69 63 61 6c 20 62 79 74  to a logical byt
1f320 65 20 61 72 72 61 79 20 6f 72 20 6e 75 6c 6c 20  e array or null 
1f330 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
1f340 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1f350 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1f360 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74  ublic static Int
1f370 50 74 72 20 54 6f 49 6e 74 50 74 72 28 0d 0a 20  Ptr ToIntPtr(.. 
1f380 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
1f390 5d 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  ] value,..      
1f3a0 20 20 20 20 20 20 72 65 66 20 69 6e 74 20 6c 65        ref int le
1f3b0 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20  ngth..          
1f3c0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1f3d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f3e0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f400 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
1f410 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
1f420 20 20 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75     length = valu
1f430 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
1f440 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e           if (len
1f450 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  gth == 0)..     
1f460 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f470 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
1f480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1f490 74 50 74 72 20 72 65 73 75 6c 74 20 3d 20 53 51  tPtr result = SQ
1f4a0 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f 63  LiteMemory.Alloc
1f4b0 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a  ate(length);....
1f4c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f4d0 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74 50 74 72  result == IntPtr
1f4e0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1f4f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
1f500 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
1f510 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
1f520 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65 2c 20 30  al.Copy(value, 0
1f530 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74 68  , result, length
1f540 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1f550 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1f560 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1f570 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1f580 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
1f590 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
1f5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f5f0 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d   #region SQLiteM
1f600 61 72 73 68 61 6c 20 53 74 61 74 69 63 20 43 6c  arshal Static Cl
1f610 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
1f620 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1f630 54 68 69 73 20 63 6c 61 73 73 20 63 6f 6e 74 61  This class conta
1f640 69 6e 73 20 73 74 61 74 69 63 20 6d 65 74 68 6f  ins static metho
1f650 64 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ds that are used
1f660 20 74 6f 20 70 65 72 66 6f 72 6d 20 73 65 76 65   to perform seve
1f670 72 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 6c 6f 77  ral..    /// low
1f680 2d 6c 65 76 65 6c 20 64 61 74 61 20 6d 61 72 73  -level data mars
1f690 68 61 6c 6c 69 6e 67 20 74 61 73 6b 73 20 62 65  halling tasks be
1f6a0 74 77 65 65 6e 20 6e 61 74 69 76 65 20 61 6e 64  tween native and
1f6b0 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a   managed code...
1f6c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f6d0 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
1f6e0 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53 51   static class SQ
1f6f0 4c 69 74 65 4d 61 72 73 68 61 6c 0d 0a 20 20 20  LiteMarshal..   
1f700 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
1f710 69 6f 6e 20 49 6e 74 50 74 72 20 48 65 6c 70 65  ion IntPtr Helpe
1f720 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
1f730 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1f740 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65  ..        /// Re
1f750 74 75 72 6e 73 20 61 20 6e 65 77 20 3c 73 65 65  turns a new <see
1f760 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
1f770 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1f780 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 0d 0a  e based on the..
1f790 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
1f7a0 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
1f7b0 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
1f7c0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 6e 64 20  ct instance and 
1f7d0 61 6e 20 69 6e 74 65 67 65 72 0d 0a 20 20 20 20  an integer..    
1f7e0 20 20 20 20 2f 2f 2f 20 6f 66 66 73 65 74 2e 0d      /// offset..
1f7f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1f800 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f810 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f820 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
1f830 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1f840 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
1f850 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1f860 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
1f870 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
1f880 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
1f890 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
1f8a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1f8b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1f8c0 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
1f8d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f8e0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
1f8f0 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
1f900 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 74 68  mory location th
1f910 61 74 20 74 68 65 20 6e 65 77 0d 0a 20 20 20 20  at the new..    
1f920 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
1f930 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
1f940 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 73 68  ject instance sh
1f950 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 2e 0d 0a  ould point to...
1f960 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1f970 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1f980 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1f990 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77       /// The new
1f9a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
1f9b0 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  tr" /> object in
1f9c0 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
1f9d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1f9e0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f9f0 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 49 6e  static IntPtr In
1fa00 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 0d 0a  tPtrForOffset(..
1fa10 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1fa20 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
1fa30 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
1fa40 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
1fa50 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
1fa60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1fa70 6e 20 6e 65 77 20 49 6e 74 50 74 72 28 70 6f 69  n new IntPtr(poi
1fa80 6e 74 65 72 2e 54 6f 49 6e 74 36 34 28 29 20 2b  nter.ToInt64() +
1fa90 20 6f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 20   offset);..     
1faa0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1faf0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fb00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fb10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 6f  ..        /// Ro
1fb20 75 6e 64 73 20 75 70 20 61 6e 20 69 6e 74 65 67  unds up an integ
1fb30 65 72 20 73 69 7a 65 20 74 6f 20 74 68 65 20 6e  er size to the n
1fb40 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  ext multiple of 
1fb50 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 0d 0a  the alignment...
1fb60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1fb70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1fb80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1fb90 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20 20 20  "size">..       
1fba0 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c 20 69   /// The size, i
1fbb0 6e 20 62 79 74 65 73 2c 20 74 6f 20 62 65 20 72  n bytes, to be r
1fbc0 6f 75 6e 64 65 64 20 75 70 2e 0d 0a 20 20 20 20  ounded up...    
1fbd0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1fbe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1fbf0 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67 6e  aram name="align
1fc00 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  ment">..        
1fc10 2f 2f 2f 20 54 68 65 20 72 65 71 75 69 72 65 64  /// The required
1fc20 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20 74   alignment for t
1fc30 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e  he return value.
1fc40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1fc50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1fc60 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1fc70 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
1fc80 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20 72  ize, in bytes, r
1fc90 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 74 68 65  ounded up to the
1fca0 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 20 6f   next multiple o
1fcb0 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
1fcc0 2f 2f 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 20 54  // alignment.  T
1fcd0 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 65 6e  his value may en
1fce0 64 20 75 70 20 62 65 69 6e 67 20 74 68 65 20 73  d up being the s
1fcf0 61 6d 65 20 61 73 20 74 68 65 20 6f 72 69 67 69  ame as the origi
1fd00 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nal..        ///
1fd10 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20 20   size...        
1fd20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1fd30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1fd40 74 61 74 69 63 20 69 6e 74 20 52 6f 75 6e 64 55  tatic int RoundU
1fd50 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
1fd60 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20 20  int size,..     
1fd70 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67 6e         int align
1fd80 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ment..          
1fd90 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
1fda0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1fdb0 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e  alignmentMinusOn
1fdc0 65 20 3d 20 61 6c 69 67 6e 6d 65 6e 74 20 2d 20  e = alignment - 
1fdd0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
1fde0 72 65 74 75 72 6e 20 28 28 73 69 7a 65 20 2b 20  return ((size + 
1fdf0 61 6c 69 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e  alignmentMinusOn
1fe00 65 29 20 26 20 7e 61 6c 69 67 6e 6d 65 6e 74 4d  e) & ~alignmentM
1fe10 69 6e 75 73 4f 6e 65 29 3b 0d 0a 20 20 20 20 20  inusOne);..     
1fe20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1fe30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1fe80 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fe90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65  ..        /// De
1fea0 74 65 72 6d 69 6e 65 73 20 74 68 65 20 6f 66 66  termines the off
1feb0 73 65 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f  set, in bytes, o
1fec0 66 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63  f the next struc
1fed0 74 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20  ture member...  
1fee0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1fef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1ff00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
1ff10 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
1ff20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74 2c   /// The offset,
1ff30 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
1ff40 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63 74  e current struct
1ff50 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
1ff60 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1ff70 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ff80 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65  param name="size
1ff90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1ffa0 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62 79 74  The size, in byt
1ffb0 65 73 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65  es, of the curre
1ffc0 6e 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  nt structure mem
1ffd0 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
1ffe0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1fff0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20000 61 6d 65 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e  ame="alignment">
20010 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
20020 65 20 61 6c 69 67 6e 6d 65 6e 74 2c 20 69 6e 20  e alignment, in 
20030 62 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65  bytes, of the ne
20040 78 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d  xt structure mem
20050 62 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber...        //
20060 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20070 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
20080 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
20090 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62 79  he offset, in by
200a0 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78 74  tes, of the next
200b0 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
200c0 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
200d0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
200e0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
200f0 63 20 69 6e 74 20 4e 65 78 74 4f 66 66 73 65 74  c int NextOffset
20100 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Of(..           
20110 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
20120 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69            int si
20130 7a 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ze,..           
20140 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a   int alignment..
20150 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20160 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20170 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 6f 75        return Rou
20180 6e 64 55 70 28 6f 66 66 73 65 74 20 2b 20 73 69  ndUp(offset + si
20190 7a 65 2c 20 61 6c 69 67 6e 6d 65 6e 74 29 3b 0d  ze, alignment);.
201a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
201b0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
201c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
201d0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
20220 67 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65 61  gion Marshal Rea
20230 64 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  d Helper Methods
20240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20250 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
20260 20 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65   /// Reads a <se
20270 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
20280 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
20290 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
202a0 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
202b0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
202c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
202d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
202e0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
202f0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20300 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20310 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20320 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20330 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20340 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
20350 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20360 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20370 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20380 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20390 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
203a0 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
203b0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
203c0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
203d0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
203e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
203f0 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
20400 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  /> value to be r
20410 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ead is located..
20420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20430 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20440 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20450 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
20460 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
20470 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
20480 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
20490 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
204a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
204b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
204c0 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 52 65  ic static int Re
204d0 61 64 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20  adInt32(..      
204e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
204f0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
20500 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
20510 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
20520 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
20530 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20540 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
20550 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73       return Mars
20560 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70 6f  hal.ReadInt32(po
20570 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d  inter, offset);.
20580 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
20590 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
205a0 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 49 6e 74  al.ReadInt32(Int
205b0 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
205c0 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d  nter, offset));.
205d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
205e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
205f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20630 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
20640 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
20650 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
20660 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
20670 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 66  nt64" /> value f
20680 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
20690 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
206a0 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
206b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
206c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
206d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
206e0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
206f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
20700 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
20710 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
20720 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
20730 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
20740 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
20750 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20760 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20770 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20780 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
20790 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
207a0 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
207b0 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
207c0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
207d0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
207e0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
207f0 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
20800 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f  to be read is lo
20810 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
20820 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20830 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
20840 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
20850 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
20860 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
20870 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
20880 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
20890 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
208a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
208b0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
208c0 20 6c 6f 6e 67 20 52 65 61 64 49 6e 74 36 34 28   long ReadInt64(
208d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
208e0 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
208f0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
20900 66 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20  ffset..         
20910 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
20920 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20930 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20940 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
20950 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
20960 49 6e 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f  Int64(pointer, o
20970 66 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a  ffset);..#else..
20980 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20990 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  rn Marshal.ReadI
209a0 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt64(IntPtrForOf
209b0 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
209c0 66 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d  fset));..#endif.
209d0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
209e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
209f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
20a40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
20a50 2f 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65  /// Reads a <see
20a60 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
20a70 3e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  > value from the
20a80 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72   specified memor
20a90 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  y..        /// l
20aa0 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20ab0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
20ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
20ad0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74  aram name="point
20ae0 65 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er">..        //
20af0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
20b00 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65  "IntPtr" /> obje
20b10 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72  ct instance repr
20b20 65 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73  esenting the bas
20b30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
20b40 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d  emory location..
20b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
20b60 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
20b70 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20b80 6f 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20  offset">..      
20b90 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65    /// The intege
20ba0 72 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68  r offset from th
20bb0 65 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f  e base memory lo
20bc0 63 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65  cation where the
20bd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
20be0 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
20bf0 20 2f 3e 20 74 6f 20 62 65 20 72 65 61 64 20 69   /> to be read i
20c00 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20  s located...    
20c10 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
20c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
20c30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
20c40 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
20c50 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
20c60 61 6c 75 65 20 61 74 20 74 68 65 20 73 70 65 63  alue at the spec
20c70 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c 6f 63  ified memory loc
20c80 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20c90 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
20ca0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
20cb0 74 61 74 69 63 20 64 6f 75 62 6c 65 20 52 65 61  tatic double Rea
20cc0 64 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  dDouble(..      
20cd0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69        IntPtr poi
20ce0 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  nter,..         
20cf0 20 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20     int offset.. 
20d00 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
20d10 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c        {..#if !PL
20d20 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
20d30 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
20d40 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74 43       return BitC
20d50 6f 6e 76 65 72 74 65 72 2e 49 6e 74 36 34 42 69  onverter.Int64Bi
20d60 74 73 54 6f 44 6f 75 62 6c 65 28 4d 61 72 73 68  tsToDouble(Marsh
20d70 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 0d 0a 20  al.ReadInt64(.. 
20d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
20d90 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29  ointer, offset))
20da0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
20db0 20 20 20 20 20 20 72 65 74 75 72 6e 20 42 69 74        return Bit
20dc0 43 6f 6e 76 65 72 74 65 72 2e 54 6f 44 6f 75 62  Converter.ToDoub
20dd0 6c 65 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  le(BitConverter.
20de0 47 65 74 42 79 74 65 73 28 0d 0a 20 20 20 20 20  GetBytes(..     
20df0 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68             Marsh
20e00 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e 74  al.ReadInt64(Int
20e10 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
20e20 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 29 29 2c  nter, offset))),
20e30 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20   0);..#endif..  
20e40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20e50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
20e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
20ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
20eb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
20ec0 20 52 65 61 64 73 20 61 6e 20 3c 73 65 65 20 63   Reads an <see c
20ed0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
20ee0 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73  value from the s
20ef0 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
20f00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
20f10 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20f20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
20f30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
20f40 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
20f50 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
20f60 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
20f70 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
20f80 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
20f90 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
20fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
20fb0 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
20fc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20fd0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20fe0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
20ff0 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
21000 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
21010 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
21020 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
21030 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
21040 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21050 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
21060 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65  > value to be re
21070 61 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a  ad is located...
21080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21090 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
210a0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
210b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
210c0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
210d0 2f 3e 20 76 61 6c 75 65 20 61 74 20 74 68 65 20  /> value at the 
210e0 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
210f0 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20   location...    
21100 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
21110 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  s>..        publ
21120 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
21130 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20   ReadIntPtr(..  
21140 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
21150 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20   pointer,..     
21160 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
21170 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
21180 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
21190 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
211a0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
211b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
211c0 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
211d0 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
211e0 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  et);..#else..   
211f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21200 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
21210 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  tr(IntPtrForOffs
21220 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
21230 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  et));..#endif.. 
21240 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21250 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
21260 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
212b0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
212c0 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74 65  on Marshal Write
212d0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
212e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
212f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21300 2f 2f 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73  /// Writes an <s
21310 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20  ee cref="Int32" 
21320 2f 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20  /> value to the 
21330 73 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79  specified memory
21340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  ..        /// lo
21350 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
21360 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
21380 72 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65  ram name="pointe
21390 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
213a0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
213b0 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63  IntPtr" /> objec
213c0 74 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65  t instance repre
213d0 73 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65  senting the base
213e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
213f0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a  mory location...
21400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
21410 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
21420 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
21430 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20  ffset">..       
21440 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72   /// The integer
21450 20 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65   offset from the
21460 20 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63   base memory loc
21470 61 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d  ation where the.
21480 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
21490 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f  e cref="Int32" /
214a0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
214b0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
214c0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
214d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
214e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
214f0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21500 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21510 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20  cref="Int32" /> 
21520 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
21530 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
21540 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
21550 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
21560 64 20 57 72 69 74 65 49 6e 74 33 32 28 0d 0a 20  d WriteInt32(.. 
21570 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21580 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20  r pointer,..    
21590 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
215a0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
215b0 20 69 6e 74 20 76 61 6c 75 65 0d 0a 20 20 20 20   int value..    
215c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
215d0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
215e0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
215f0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
21600 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
21610 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66  nt32(pointer, of
21620 66 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  fset, value);..#
21630 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
21640 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
21650 6e 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt32(IntPtrForOf
21660 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
21670 66 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a  fset), value);..
21680 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
21690 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
216a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
216e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
216f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
21700 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
21710 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
21720 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20  Int64" /> value 
21730 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
21740 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
21750 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
21760 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21770 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21780 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21790 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
217a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
217b0 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
217c0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
217d0 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
217e0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
217f0 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
21800 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
21810 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
21820 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21830 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
21840 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21850 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
21860 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
21870 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
21880 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
21890 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
218a0 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt64" /> value t
218b0 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20  o be written is 
218c0 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
218d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
218e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
218f0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
21900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
21910 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
21920 36 34 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  64" /> value to 
21930 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
21940 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21950 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21960 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e  tic void WriteIn
21970 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
21980 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
21990 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
219a0 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
219b0 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 76 61 6c          long val
219c0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
219d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
219e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
219f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
21a00 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
21a10 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 70 6f 69  l.WriteInt64(poi
21a20 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61  nter, offset, va
21a30 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
21a40 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
21a50 6c 2e 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74  l.WriteInt64(Int
21a60 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
21a70 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76  nter, offset), v
21a80 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
21a90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
21aa0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
21ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
21af0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
21b00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21b10 2f 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65  // Writes a <see
21b20 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
21b30 3e 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73  > value to the s
21b40 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
21b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
21b60 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
21b70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21b80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
21b90 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
21ba0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
21bb0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
21bc0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
21bd0 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
21be0 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
21bf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
21c00 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
21c10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21c20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
21c30 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
21c40 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
21c50 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
21c60 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
21c70 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
21c80 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
21c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
21ca0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
21cb0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72  > value to be wr
21cc0 69 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64  itten is located
21cd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
21ce0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
21cf0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21d00 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20  ="value">..     
21d10 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21d20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
21d30 20 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e   value to write.
21d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
21d50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
21d60 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
21d70 69 64 20 57 72 69 74 65 44 6f 75 62 6c 65 28 0d  id WriteDouble(.
21d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
21d90 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
21da0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
21db0 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  fset,..         
21dc0 20 20 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 0d     double value.
21dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
21de0 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
21df0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
21e00 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
21e10 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
21e20 72 69 74 65 49 6e 74 36 34 28 70 6f 69 6e 74 65  riteInt64(pointe
21e30 72 2c 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  r, offset,..    
21e40 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74 43              BitC
21e50 6f 6e 76 65 72 74 65 72 2e 44 6f 75 62 6c 65 54  onverter.DoubleT
21e60 6f 49 6e 74 36 34 42 69 74 73 28 76 61 6c 75 65  oInt64Bits(value
21e70 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
21e80 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
21e90 57 72 69 74 65 49 6e 74 36 34 28 49 6e 74 50 74  WriteInt64(IntPt
21ea0 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
21eb0 65 72 2c 20 6f 66 66 73 65 74 29 2c 0d 0a 20 20  er, offset),..  
21ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                Bi
21ed0 74 43 6f 6e 76 65 72 74 65 72 2e 54 6f 49 6e 74  tConverter.ToInt
21ee0 36 34 28 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  64(BitConverter.
21ef0 47 65 74 42 79 74 65 73 28 76 61 6c 75 65 29 2c  GetBytes(value),
21f00 20 30 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20   0));..#endif.. 
21f10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
21f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
21f80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21f90 2f 20 57 72 69 74 65 73 20 61 20 3c 73 65 65 20  / Writes a <see 
21fa0 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
21fb0 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70   value to the sp
21fc0 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
21fd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
21fe0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
21ff0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
22000 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
22010 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
22020 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22030 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
22040 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
22050 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
22060 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
22070 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
22080 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
22090 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
220a0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
220b0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
220c0 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
220d0 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
220e0 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
220f0 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
22100 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
22110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
22120 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
22130 20 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69   value to be wri
22140 74 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e  tten is located.
22150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
22160 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
22170 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22180 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
22190 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
221a0 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
221b0 76 61 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d  value to write..
221c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
221d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
221e0 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
221f0 64 20 57 72 69 74 65 49 6e 74 50 74 72 28 0d 0a  d WriteIntPtr(..
22200 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
22210 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
22220 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
22230 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
22240 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65 0d 0a    IntPtr value..
22250 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
22260 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50         {..#if !P
22270 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
22280 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
22290 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57 72        Marshal.Wr
222a0 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e 74 65  iteIntPtr(pointe
222b0 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c 75 65  r, offset, value
222c0 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
222d0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 57         Marshal.W
222e0 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74 50 74  riteIntPtr(IntPt
222f0 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74  rForOffset(point
22300 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61 6c  er, offset), val
22310 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue);..#endif..  
22320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
22330 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
22340 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
22350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
22390 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
223a0 6e 20 4f 62 6a 65 63 74 20 48 65 6c 70 65 72 20  n Object Helper 
223b0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
223c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
223d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 6e 65          /// Gene
223e0 72 61 74 65 73 20 61 20 68 61 73 68 20 63 6f 64  rates a hash cod
223f0 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
22400 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 20  object...       
22410 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22420 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
22430 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
22440 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22450 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  he object instan
22460 63 65 20 75 73 65 64 20 74 6f 20 63 61 6c 63 75  ce used to calcu
22470 6c 61 74 65 20 74 68 65 20 68 61 73 68 20 63 6f  late the hash co
22480 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
22490 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
224a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
224b0 6d 65 3d 22 69 64 65 6e 74 69 74 79 22 3e 0d 0a  me="identity">..
224c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
224d0 7a 65 72 6f 20 69 66 20 64 69 66 66 65 72 65 6e  zero if differen
224e0 74 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  t object instanc
224f0 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d 65  es with the same
22500 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 0d 0a 20   value should.. 
22510 20 20 20 20 20 20 20 2f 2f 2f 20 67 65 6e 65 72         /// gener
22520 61 74 65 20 64 69 66 66 65 72 65 6e 74 20 68 61  ate different ha
22530 73 68 20 63 6f 64 65 73 2c 20 77 68 65 72 65 20  sh codes, where 
22540 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54 68 69  applicable.  Thi
22550 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20 20  s parameter..   
22560 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 6e 6f 20       /// has no 
22570 65 66 66 65 63 74 20 6f 6e 20 74 68 65 20 2e 4e  effect on the .N
22580 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
22590 77 6f 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f  work...        /
225a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
225b0 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
225c0 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
225d0 54 68 65 20 68 61 73 68 20 63 6f 64 65 20 76 61  The hash code va
225e0 6c 75 65 20 2d 4f 52 2d 20 7a 65 72 6f 20 69 66  lue -OR- zero if
225f0 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 20 6e   the object is n
22600 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
22610 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
22620 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
22630 74 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43  tic int GetHashC
22640 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ode(..          
22650 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c 0d    object value,.
22660 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
22670 6c 20 69 64 65 6e 74 69 74 79 0d 0a 20 20 20 20  l identity..    
22680 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
22690 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
226a0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
226b0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
226c0 20 20 69 66 20 28 69 64 65 6e 74 69 74 79 29 0d    if (identity).
226d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
226e0 20 72 65 74 75 72 6e 20 52 75 6e 74 69 6d 65 48   return RuntimeH
226f0 65 6c 70 65 72 73 2e 47 65 74 48 61 73 68 43 6f  elpers.GetHashCo
22700 64 65 28 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64  de(value);..#end
22710 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
22720 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
22730 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a  ull) return 0;..
22740 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
22750 72 6e 20 76 61 6c 75 65 2e 47 65 74 48 61 73 68  rn value.GetHash
22760 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  Code();..       
22770 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
22780 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
22790 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
227a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
227b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
227f0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
22800 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 42 61 73  SQLiteModule Bas
22810 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f  e Class..    ///
22820 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
22830 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72  /// This class r
22840 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61 6e 61  epresents a mana
22850 67 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ged virtual tabl
22860 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
22870 6e 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  ntation...    //
22880 2f 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61 6c  / It is not seal
22890 65 64 20 61 6e 64 20 6d 75 73 74 20 62 65 20 75  ed and must be u
228a0 73 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20  sed as the base 
228b0 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20  class for any.. 
228c0 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69     /// user-defi
228d0 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
228e0 65 20 6d 6f 64 75 6c 65 20 63 6c 61 73 73 65 73  e module classes
228f0 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20   implemented in 
22900 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20  managed code... 
22910 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22920 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 61 62  >..    public ab
22930 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
22940 69 74 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20 20 20  iteModule :..   
22950 20 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65           ISQLite
22960 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2c 20 2f  ManagedModule, /
22970 2a 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  *ISQLiteNativeMo
22980 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20 20 20 20 20  dule,*/..       
22990 20 20 20 20 20 49 44 69 73 70 6f 73 61 62 6c 65       IDisposable
229a0 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a   /* NOT SEALED *
229b0 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  /..    {..      
229c0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
229d0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 50 72 69  NativeModule Pri
229e0 76 61 74 65 20 43 6c 61 73 73 0d 0a 20 20 20 20  vate Class..    
229f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22a00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
22a10 68 69 73 20 63 6c 61 73 73 20 69 6d 70 6c 65 6d  his class implem
22a20 65 6e 74 73 20 74 68 65 20 3c 73 65 65 20 63 72  ents the <see cr
22a30 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
22a40 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
22a50 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61       /// interfa
22a60 63 65 20 62 79 20 66 6f 72 77 61 72 64 69 6e 67  ce by forwarding
22a70 20 74 68 6f 73 65 20 6d 65 74 68 6f 64 20 63 61   those method ca
22a80 6c 6c 73 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  lls to the..    
22a90 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
22aa0 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22  f="SQLiteModule"
22ab0 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
22ac0 6e 63 65 20 69 74 20 63 6f 6e 74 61 69 6e 73 2e  nce it contains.
22ad0 20 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20 20    If the..      
22ae0 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 65 64 20    /// contained 
22af0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
22b00 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65  eModule" /> obje
22b10 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e  ct instance is n
22b20 75 6c 6c 2c 20 61 6c 6c 0d 0a 20 20 20 20 20 20  ull, all..      
22b30 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
22b40 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
22b50 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6d 65 74  veModule" /> met
22b60 68 6f 64 73 20 73 69 6d 70 6c 79 20 67 65 6e 65  hods simply gene
22b70 72 61 74 65 20 61 6e 0d 0a 20 20 20 20 20 20 20  rate an..       
22b80 20 2f 2f 2f 20 65 72 72 6f 72 2e 0d 0a 20 20 20   /// error...   
22b90 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
22ba0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
22bb0 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73  vate sealed clas
22bc0 73 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  s SQLiteNativeMo
22bd0 64 75 6c 65 20 3a 0d 0a 20 20 20 20 20 20 20 20  dule :..        
22be0 20 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e          ISQLiteN
22bf0 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20 49 44 69  ativeModule, IDi
22c00 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20  sposable..      
22c10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
22c20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
22c30 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20   Constants..    
22c40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22c50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
22c60 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
22c70 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73  he value that is
22c80 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72   always used for
22c90 20 74 68 65 20 22 6c 6f 67 45 72 72 6f 72 73 22   the "logErrors"
22ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22cb0 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
22cc0 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74 69  he various stati
22cd0 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67  c error handling
22ce0 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
22cf0 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  d..            /
22d00 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  // by the <see c
22d10 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
22d20 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  e" /> class...  
22d30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
22d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22d50 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
22d60 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
22d70 4c 6f 67 45 72 72 6f 72 73 20 3d 20 74 72 75 65  LogErrors = true
22d80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
22d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22dd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
22de0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22df0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
22e00 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 76  // This is the v
22e10 61 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c 77  alue that is alw
22e20 61 79 73 20 75 73 65 64 20 66 6f 72 20 74 68 65  ays used for the
22e30 20 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22   "logExceptions"
22e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22e50 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
22e60 68 65 20 76 61 72 69 6f 75 73 20 73 74 61 74 69  he various stati
22e70 63 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67  c error handling
22e80 20 6d 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65   methods provide
22e90 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  d..            /
22ea0 2f 2f 20 62 79 20 74 68 65 20 3c 73 65 65 20 63  // by the <see c
22eb0 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
22ec0 65 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  e" /> class...  
22ed0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
22ee0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22ef0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
22f00 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
22f10 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 20 3d 20  LogExceptions = 
22f20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
22f30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
22f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
22f80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
22f90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
22fa0 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
22fb0 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
22fc0 20 74 65 78 74 20 75 73 65 64 20 77 68 65 6e 20   text used when 
22fd0 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d 0a 20  the contained.. 
22fe0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
22ff0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
23000 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
23010 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 6e 6f  t instance is no
23020 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20  t available..   
23030 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72           /// for
23040 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d 0a 20 20   any reason...  
23050 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23060 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23070 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
23080 6e 73 74 20 73 74 72 69 6e 67 20 4d 6f 64 75 6c  nst string Modul
23090 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72  eNotAvailableErr
230a0 6f 72 4d 65 73 73 61 67 65 20 3d 0d 0a 20 20 20  orMessage =..   
230b0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 61               "na
230c0 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c  tive module impl
230d0 65 6d 65 6e 74 61 74 69 6f 6e 20 6e 6f 74 20 61  ementation not a
230e0 76 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20  vailable";..    
230f0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
23100 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
23110 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
23120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23150 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23160 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
23170 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
23180 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
23190 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
231a0 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
231b0 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
231c0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
231d0 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20 70 72  tance used to pr
231e0 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20 20 20  ovide..         
231f0 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c 65 6d     /// an implem
23200 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
23210 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
23220 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
23230 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  />..            
23240 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a  /// interface...
23250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23260 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
23270 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
23280 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
23290 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ule;..          
232a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
232b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
232c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
232f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
23300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
23310 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f  region Public Co
23320 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
23330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
23340 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
23350 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74     /// Construct
23360 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  s an instance of
23370 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20   this class...  
23380 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
23390 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
233a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
233b0 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
233c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
233d0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
233e0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
233f0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
23400 20 75 73 65 64 20 74 6f 20 70 72 6f 76 69 64 65   used to provide
23410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23420 2f 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74  / an implementat
23430 69 6f 6e 20 6f 66 20 74 68 65 20 3c 73 65 65 20  ion of the <see 
23440 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
23450 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20  iveModule" />.. 
23460 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69             /// i
23470 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20  nterface...     
23480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23490 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
234a0 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4e 61   public SQLiteNa
234b0 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20  tiveModule(..   
234c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
234d0 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
234e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
234f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
23500 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23510 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 65 20      this.module 
23520 3d 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  = module;..     
23530 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
23540 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
23550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
235b0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
235c0 74 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  te Static Method
235d0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
235e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
235f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
23600 74 73 20 74 68 65 20 74 61 62 6c 65 20 65 72 72  ts the table err
23610 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e  or message to on
23620 65 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73  e that indicates
23630 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20   the native..   
23640 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64           /// mod
23650 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ule implementati
23660 6f 6e 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  on is not availa
23670 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ble...          
23680 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
236a0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
236b0 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
236c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
236d0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
236e0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
236f0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
23700 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23710 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23720 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
23730 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
23740 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
23750 65 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22  e of <see cref="
23760 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
23770 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20  Error" />...    
23780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
23790 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
237a0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
237b0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
237c0 64 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  de ModuleNotAvai
237d0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
237e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
237f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
23800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23810 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
23820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23830 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
23840 6e 75 6c 6c 2c 20 70 56 74 61 62 2c 20 44 65 66  null, pVtab, Def
23850 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a  aultLogErrors,..
23860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23870 20 20 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78      DefaultLogEx
23880 63 65 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65  ceptions, Module
23890 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
238a0 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
238b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
238c0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
238d0 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
238e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
238f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
23900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
23940 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23950 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
23960 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
23970 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72   the table error
23980 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20   message to one 
23990 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74  that indicates t
239a0 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
239b0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c         /// modul
239c0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
239d0 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
239e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
239f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
23a00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23a10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
23a20 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
23a30 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
23a40 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
23a50 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
23a60 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a 20  ursor derived.. 
23a70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 73             /// s
23a80 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
23a90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23aa0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
23ab0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
23ac0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23ad0 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65  The value of <se
23ae0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72  e cref="SQLiteEr
23af0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f  rorCode.Error" /
23b00 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  >...            
23b10 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
23b20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
23b30 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
23b40 65 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c  eErrorCode Modul
23b50 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
23b60 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  sorError(..     
23b70 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
23b80 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
23b90 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
23ba0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74               Set
23bc0 43 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c 6c  CursorError(null
23bd0 2c 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61 75  , pCursor, Defau
23be0 6c 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20  ltLogErrors,..  
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c00 20 20 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65    DefaultLogExce
23c10 70 74 69 6f 6e 73 2c 20 4d 6f 64 75 6c 65 4e 6f  ptions, ModuleNo
23c20 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d  tAvailableErrorM
23c30 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20  essage);....    
23c40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23c50 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
23c60 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
23c70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
23c80 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
23c90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23ce0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
23cf0 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
23d00 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 4d  teNativeModule M
23d10 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
23d20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
23d30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23d40 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
23d50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
23d60 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
23d70 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
23d80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23d90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
23da0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23db0 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20  m name="pDb">.. 
23dc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
23dd0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
23de0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
23df0 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f  odule.xCreate" /
23e00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
23e10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
23e20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
23e30 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23e40 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20  ="pAux">..      
23e50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
23e60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23e70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23e80 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
23e90 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
23ea0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
23eb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23ec0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
23ed0 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c">..           
23ee0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
23ef0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
23f00 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
23f10 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
23f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23f30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
23f40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
23f50 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
23f60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23f70 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
23f80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
23f90 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
23fa0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
23fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23fc0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23fd0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
23fe0 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
23ff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24000 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24010 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24020 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
24030 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
24040 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
24050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24060 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24070 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  Error">..       
24080 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24090 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
240a0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
240b0 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
240c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
240d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
240e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
240f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
24100 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
24110 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24120 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24130 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
24140 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24150 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
24160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
24170 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
24180 43 6f 64 65 20 78 43 72 65 61 74 65 28 0d 0a 20  Code xCreate(.. 
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
241a0 6e 74 50 74 72 20 70 44 62 2c 0d 0a 20 20 20 20  ntPtr pDb,..    
241b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
241c0 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
241d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
241e0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
241f0 20 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76       IntPtr argv
24200 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
24210 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 56     ref IntPtr pV
24220 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
24230 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
24240 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
24250 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
24260 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24270 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
24280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
24290 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
242a0 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
242b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
242d0 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
242e0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
242f0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
24300 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
24310 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
24320 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24340 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
24350 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
24360 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
24370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24380 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e           ModuleN
24390 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f 72  otAvailableError
243a0 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20  Message);....   
243b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243c0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
243d0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
243e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
24400 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
24410 6c 65 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20  le.xCreate(..   
24420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24430 20 70 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63   pDb, pAux, argc
24440 2c 20 61 72 67 76 2c 20 72 65 66 20 70 56 74 61  , argv, ref pVta
24450 62 2c 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d  b, ref pError);.
24460 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
24470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
244c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
244d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
244e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
244f0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
24500 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24510 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
24520 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24530 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
24540 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
24550 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
24560 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20  name="pDb">..   
24570 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
24580 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
24590 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
245a0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
245b0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
245c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
245d0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
245e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
245f0 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20  "pAux">..       
24600 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
24610 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
24620 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
24630 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  xConnect" /> met
24640 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24650 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
24660 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24670 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
24680 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c">..           
24690 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
246a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
246b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
246c0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
246d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
246e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
246f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
24700 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d  am name="argv">.
24710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24720 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
24730 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
24740 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
24750 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24760 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24770 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24780 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
24790 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
247a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
247b0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
247c0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
247d0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
247e0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
247f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24800 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24810 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
24820 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20  ="pError">..    
24830 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24840 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24850 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24860 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
24870 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
24880 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
24890 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
248a0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
248b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
248c0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
248d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
248e0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
248f0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24900 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24910 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
24920 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
24930 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6e 6e 65  ErrorCode xConne
24940 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
24950 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
24960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24970 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a    IntPtr pAux,..
24980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24990 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
249a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
249b0 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20  r argv,..       
249c0 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74           ref Int
249d0 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20  Ptr pVtab,..    
249e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
249f0 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20  IntPtr pError.. 
24a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
24a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
24a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a30 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
24a40 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
24a50 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
24a60 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
24a70 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
24a80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
24a90 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
24aa0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
24ac0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
24ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24ae0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24af0 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72            pError
24b00 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e   = SQLiteString.
24b10 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74  Utf8IntPtrFromSt
24b20 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
24b40 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
24b50 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
24b60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24b70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
24b80 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
24b90 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ror;..          
24ba0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24bb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
24bc0 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  n module.xConnec
24bd0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
24be0 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75          pDb, pAu
24bf0 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72  x, argc, argv, r
24c00 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45  ef pVtab, ref pE
24c10 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
24c20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
24c30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c50 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
24c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
24c90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
24ca0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
24cb0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
24cc0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
24cd0 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74  estIndex" /> met
24ce0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
24cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
24d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24d10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
24d20 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
24d30 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24d40 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24d50 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24d60 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
24d70 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24d80 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24da0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 49   <param name="pI
24db0 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
24dc0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24dd0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24de0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24df0 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d 65  BestIndex" /> me
24e00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
24e10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24e30 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
24e40 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24e50 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24e60 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24e70 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f  le.xBestIndex" /
24e80 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
24e90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
24ea0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
24eb0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
24ec0 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73 74 49  ErrorCode xBestI
24ed0 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20  ndex(..         
24ee0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
24ef0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
24f00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 49 6e        IntPtr pIn
24f10 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
24f20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
24f30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24f40 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
24f50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
24f60 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
24f70 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
24f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
24fb0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
24fc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24fd0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
24fe0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
24ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25000 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
25010 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
25020 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
25030 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25040 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74 49  rn module.xBestI
25050 6e 64 65 78 28 70 56 74 61 62 2c 20 70 49 6e 64  ndex(pVtab, pInd
25060 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ex);..          
25070 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25080 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
250c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
250d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
250e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
250f0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25100 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25110 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73  ativeModule.xDis
25120 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  connect" /> meth
25130 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25140 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
25150 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25160 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
25170 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
25180 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25190 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
251a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
251b0 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  isconnect" /> me
251c0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
251d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
251e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
251f0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25200 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25210 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25220 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25230 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
25240 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25250 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
25260 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
25270 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
25280 65 45 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63  eErrorCode xDisc
25290 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
252a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
252b0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
252c0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
252d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
252e0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25300 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
25310 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25340 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
25350 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
25360 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
25370 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
25380 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
253a0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
253b0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
253c0 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
253d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
253e0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 69 73  turn module.xDis
253f0 63 6f 6e 6e 65 63 74 28 70 56 74 61 62 29 3b 0d  connect(pVtab);.
25400 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
25410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25460 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25470 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
25480 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25490 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
254a0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
254b0 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22  Module.xDestroy"
254c0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
254d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
254e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
254f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25500 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
25510 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25520 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
25530 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
25540 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 22 20  odule.xDestroy" 
25550 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
25560 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
25570 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
25580 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
25590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
255a0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
255b0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
255c0 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
255d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
255e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
255f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
25600 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
25610 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65  iteErrorCode xDe
25620 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
25630 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25640 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
25650 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
25660 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25670 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
25680 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
25690 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
256a0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
256b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
256c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
256d0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
256e0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
256f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
25700 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
25710 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25730 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
25740 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
25750 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25770 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74  urn module.xDest
25780 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  roy(pVtab);..   
25790 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
257a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
257b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
257e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
257f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25800 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25810 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25820 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25830 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25840 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
25850 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
25860 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
25870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25880 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
25890 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
258a0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
258b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
258c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
258d0 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
258e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
258f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25900 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25910 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
25920 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
25930 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
25940 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
25950 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
25960 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25970 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25980 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25990 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
259a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
259b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
259c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
259d0 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22  iveModule.xOpen"
259e0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
259f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
25a00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
25a10 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
25a20 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
25a30 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
25a40 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
25a50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25a60 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
25a70 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
25a80 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
25a90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25aa0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
25ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
25ac0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
25ad0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
25ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
25af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25b00 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
25b10 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
25b20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
25b30 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
25b40 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25b60 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
25b70 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
25b80 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25ba0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 4f 70 65  turn module.xOpe
25bb0 6e 28 70 56 74 61 62 2c 20 72 65 66 20 70 43 75  n(pVtab, ref pCu
25bc0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
25bd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
25be0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
25bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
25c30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
25c40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25c50 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25c60 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25c70 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
25c80 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
25c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25ca0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
25cb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25cc0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
25cd0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
25ce0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25cf0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25d00 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
25d10 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
25d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25d30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
25d50 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
25d60 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25d70 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25d80 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c  NativeModule.xCl
25d90 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ose" /> method..
25da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25db0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
25dc0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
25dd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25de0 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
25df0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
25e00 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
25e10 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
25e20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25e30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
25e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25e50 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
25e60 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
25e90 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
25ea0 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
25eb0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
25ec0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
25ed0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
25ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ef0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
25f00 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
25f10 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
25f20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
25f30 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
25f40 2e 78 43 6c 6f 73 65 28 70 43 75 72 73 6f 72 29  .xClose(pCursor)
25f50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
25f60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25f90 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
25fc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
25fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25fe0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25ff0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26000 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
26010 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26020 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26030 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26040 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
26050 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
26060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26070 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
26080 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
26090 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
260a0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
260b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
260c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
260d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
260e0 61 6d 65 3d 22 69 64 78 4e 75 6d 22 3e 0d 0a 20  ame="idxNum">.. 
260f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
26100 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26110 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26120 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f  odule.xFilter" /
26130 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26140 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26150 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26160 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26170 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20  ="idxStr">..    
26180 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26190 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
261a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
261b0 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d  le.xFilter" /> m
261c0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
261d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
261e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
261f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
26200 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgc">..         
26210 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26220 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26230 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
26240 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
26250 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26260 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
26270 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
26280 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e  ram name="argv">
26290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
262a0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
262b0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
262c0 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72  veModule.xFilter
262d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
262e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
262f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
26300 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
26310 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26320 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26330 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26340 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
26350 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
26360 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26370 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
26380 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
26390 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 46  LiteErrorCode xF
263a0 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
263b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
263c0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
263d0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 64 78           int idx
263e0 4e 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Num,..          
263f0 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 64 78        IntPtr idx
26400 53 74 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Str,..          
26410 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
26420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26430 20 49 6e 74 50 74 72 20 61 72 67 76 0d 0a 20 20   IntPtr argv..  
26440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
26450 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
26460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26470 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
26480 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
26490 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
264a0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
264b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
264c0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
264d0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
264e0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
264f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26500 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
26510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26520 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
26530 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
26540 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
26550 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
26560 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26570 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70 43  odule.xFilter(pC
26580 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20 69  ursor, idxNum, i
26590 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72 67  dxStr, argc, arg
265a0 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v);..           
265b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
265c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
265d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
265f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26600 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
26610 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
26620 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
26630 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
26640 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
26650 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
26660 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26670 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26680 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
26690 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
266a0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
266b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
266c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
266d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
266e0 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
266f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26700 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
26710 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
26720 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
26730 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26740 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26750 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26760 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f  eModule.xNext" /
26770 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26780 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
26790 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
267a0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
267b0 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
267c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
267d0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
267e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
267f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
26800 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26810 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26820 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
26830 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76   Called by nativ
26840 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  e code...       
26850 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26860 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
26870 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
26880 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d   /* EXEMPT */...
26890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
268a0 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
268b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
268c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
268d0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
268e0 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70  bleCursorError(p
268f0 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
26900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26910 72 6e 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 28  rn module.xNext(
26920 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20  pCursor);..     
26930 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
26940 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
26950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
26990 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
269a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
269b0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
269c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
269d0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
269e0 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64  .xEof" /> method
269f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26a00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
26a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26a20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
26a30 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  sor">..         
26a40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26a50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
26a60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45  eNativeModule.xE
26a70 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
26a80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26a90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
26ab0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
26ac0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26ad0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26ae0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66  ativeModule.xEof
26af0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
26b00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26b10 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
26b20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
26b30 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
26b40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
26b50 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  Cursor..        
26b60 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
26b70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26b80 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26ba0 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
26bb0 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26bd0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26be0 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
26bf0 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
26c00 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
26c10 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
26c20 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
26c30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c50 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69     ModuleNotAvai
26c60 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72  lableCursorError
26c70 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20  (pCursor);..    
26c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c90 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20  return 1;..     
26ca0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
26cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cc0 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 45  return module.xE
26cd0 6f 66 28 70 43 75 72 73 6f 72 29 3b 0d 0a 20 20  of(pCursor);..  
26ce0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26cf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
26d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
26d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26d50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
26d60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26d70 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26d80 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26d90 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
26da0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26db0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
26dc0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
26dd0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26de0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
26df0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26e00 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26e10 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26e20 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
26e30 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26e40 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
26e50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26e60 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
26e70 70 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20  pContext">..    
26e80 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
26e90 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
26ea0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
26eb0 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
26ec0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
26ed0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
26ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26ef0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
26f00 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20  ndex">..        
26f10 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26f20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26f30 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26f40 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
26f50 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
26f60 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
26f70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
26f80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26f90 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
26fa0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
26fb0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
26fc0 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68  xColumn" /> meth
26fd0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26fe0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
26ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
27000 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
27010 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20  ode xColumn(..  
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
27030 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20  tPtr pCursor,.. 
27040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
27050 6e 74 50 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d  ntPtr pContext,.
27060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27070 20 69 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20   int index..    
27080 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
27090 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
270a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
270b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
270c0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
270d0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
270e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
270f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27100 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
27110 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
27120 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
27130 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
27140 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
27150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27160 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
27170 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
27180 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
27190 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
271a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
271b0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72  ule.xColumn(pCur
271c0 73 6f 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69  sor, pContext, i
271d0 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndex);..        
271e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
271f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
27200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27230 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
27240 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
27250 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
27260 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27270 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27280 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
27290 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  owId" /> method.
272a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
272b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
272c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
272d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
272e0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
272f0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27300 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27310 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
27320 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
27330 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27340 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
27350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
27360 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
27370 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27380 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27390 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
273a0 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
273b0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
273c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
273d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
273e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
273f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27400 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27410 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27420 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20  eModule.xRowId" 
27430 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
27450 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
27460 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
27470 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
27480 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
27490 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
274a0 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
274b0 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
274c0 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  wId..           
274d0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
274e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
274f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
27500 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
27510 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
27520 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
27530 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27550 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
27560 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
27570 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27580 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
27590 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
275a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
275b0 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
275c0 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
275d0 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
275e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
275f0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f  eturn module.xRo
27600 77 49 64 28 70 43 75 72 73 6f 72 2c 20 72 65 66  wId(pCursor, ref
27610 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20   rowId);..      
27620 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27630 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
27640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
27690 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
276a0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
276b0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
276c0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
276d0 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
276e0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
276f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
27700 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27710 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
27720 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
27730 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27740 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27750 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55  eNativeModule.xU
27760 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  pdate" /> method
27770 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27780 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
27790 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
277a0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 63 22 3e  ram name="argc">
277b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
277c0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
277d0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
277e0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
277f0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27800 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27810 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
27820 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
27830 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20  ame="argv">..   
27840 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27850 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27860 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27870 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e 20  ule.xUpdate" /> 
27880 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27890 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
278a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
278b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
278c0 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20  rowId">..       
278d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
278e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
278f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
27900 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
27910 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27920 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27930 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
27950 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27960 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27970 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27980 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
27990 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
279a0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
279b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
279c0 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
279d0 43 6f 64 65 20 78 55 70 64 61 74 65 28 0d 0a 20  Code xUpdate(.. 
279e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
279f0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
27a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
27a10 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20  t argc,..       
27a20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
27a30 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20  argv,..         
27a40 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20         ref long 
27a50 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rowId..         
27a60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
27a70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27a80 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
27a90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27aa0 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20  NOTE: Called by 
27ab0 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20  native code...  
27ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27ae0 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
27af0 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20  ed(); /* EXEMPT 
27b00 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  */....          
27b10 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
27b20 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
27b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27b40 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
27b50 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
27b60 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
27b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27b80 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 55 70 64  turn module.xUpd
27b90 61 74 65 28 70 56 74 61 62 2c 20 61 72 67 63 2c  ate(pVtab, argc,
27ba0 20 61 72 67 76 2c 20 72 65 66 20 72 6f 77 49 64   argv, ref rowId
27bb0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27bc0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27bd0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27c20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
27c30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
27c40 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
27c50 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
27c60 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
27c70 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
27c80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
27c90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27ca0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27cb0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
27cc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27cd0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27ce0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27cf0 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f  Module.xBegin" /
27d00 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27d10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
27d20 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
27d30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
27d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27d50 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27d60 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27d70 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f  Module.xBegin" /
27d80 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
27d90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
27da0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
27db0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
27dc0 45 72 72 6f 72 43 6f 64 65 20 78 42 65 67 69 6e  ErrorCode xBegin
27dd0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
27de0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
27df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e00 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
27e10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27e20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27e30 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
27e40 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
27e50 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
27e60 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27e70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
27e80 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
27e90 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
27ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27eb0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
27ec0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27ed0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
27ee0 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
27ef0 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
27f00 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
27f10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
27f20 6f 64 75 6c 65 2e 78 42 65 67 69 6e 28 70 56 74  odule.xBegin(pVt
27f30 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
27f40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
27f50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
27f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
27fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
27fb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
27fc0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
27fd0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
27fe0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
27ff0 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  c" /> method... 
28000 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28010 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
28020 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28030 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
28040 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28050 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28060 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28070 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f  eModule.xSync" /
28080 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28090 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
280a0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
280b0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
280c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
280d0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
280e0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
280f0 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e  Module.xSync" />
28100 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28110 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28120 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28130 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
28140 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
28150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28160 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20   IntPtr pVtab.. 
28170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
28180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
28190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
281a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
281b0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
281c0 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
281d0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
281e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
281f0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
28200 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
28210 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
28220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
28230 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
28240 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28250 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
28260 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
28270 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
28280 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
28290 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
282a0 75 6c 65 2e 78 53 79 6e 63 28 70 56 74 61 62 29  ule.xSync(pVtab)
282b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
282c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28310 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
28320 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
28330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28340 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28350 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28360 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  veModule.xCommit
28370 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28380 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28390 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
283a0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
283b0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
283c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
283d0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
283e0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
283f0 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22 20  Module.xCommit" 
28400 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28410 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
28420 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
28430 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
28440 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28450 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28460 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28470 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 22  eModule.xCommit"
28480 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28490 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
284a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
284b0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
284c0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6d  teErrorCode xCom
284d0 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mit(..          
284e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
284f0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
28500 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
28510 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28520 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28530 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
28540 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
28550 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
28560 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28580 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
28590 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
285a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
285b0 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
285c0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
285d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
285e0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
285f0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
28600 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
28610 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28620 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74  n module.xCommit
28630 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
28640 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
28650 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
28660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
286a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
286b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
286c0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
286d0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
286e0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
286f0 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
28700 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28710 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28720 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28730 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28740 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
28750 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28760 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28770 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28780 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d 65  xRollback" /> me
28790 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
287a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
287b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
287c0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
287d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
287e0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
287f0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28800 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e  le.xRollback" />
28810 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28820 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28830 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28840 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
28850 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
28860 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck(..           
28870 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
28880 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b..             
28890 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
288a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
288b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
288c0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
288d0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
288e0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
288f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
28900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28910 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
28920 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
28930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28940 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
28950 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
28960 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
28970 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
28980 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70  ableTableError(p
28990 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
289a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
289b0 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
289c0 6b 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  k(pVtab);..     
289d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
289e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
289f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28a30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28a40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28a50 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28a60 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28a70 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28a80 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
28a90 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
28aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
28ab0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
28ac0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
28ad0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
28ae0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28af0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28b00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28b10 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
28b20 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
28b30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28b40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28b50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28b60 20 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20   name="nArg">.. 
28b70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28b80 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28b90 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28ba0 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
28bb0 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
28bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28bd0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28be0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28bf0 6d 20 6e 61 6d 65 3d 22 7a 4e 61 6d 65 22 3e 0d  m name="zName">.
28c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28c10 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28c20 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28c30 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
28c40 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
28c50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28c60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28c70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
28c80 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61  ram name="callba
28c90 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ck">..          
28ca0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28cb0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28cc0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
28cd0 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
28ce0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28cf0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
28d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28d10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
28d20 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20  ClientData">..  
28d30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28d40 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28d50 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28d60 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
28d70 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  on" /> method...
28d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28d90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28da0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28db0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28dc0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28dd0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28de0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
28df0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
28e00 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28e10 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
28e20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
28e30 75 62 6c 69 63 20 69 6e 74 20 78 46 69 6e 64 46  ublic int xFindF
28e40 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  unction(..      
28e50 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
28e60 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
28e70 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72           int nAr
28e80 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
28e90 20 20 20 20 49 6e 74 50 74 72 20 7a 4e 61 6d 65      IntPtr zName
28ea0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28eb0 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61 6c     ref SQLiteCal
28ec0 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d  lback callback,.
28ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28ee0 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 6c 69   ref IntPtr pCli
28ef0 65 6e 74 44 61 74 61 0d 0a 20 20 20 20 20 20 20  entData..       
28f00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
28f10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28f20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28f40 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
28f50 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
28f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f70 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
28f80 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
28f90 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
28fa0 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
28fb0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
28fc0 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ff0 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61      ModuleNotAva
29000 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72  ilableTableError
29010 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
29020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29030 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
29040 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29060 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69 6e  turn module.xFin
29070 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
29080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29090 70 56 74 61 62 2c 20 6e 41 72 67 2c 20 7a 4e 61  pVtab, nArg, zNa
290a0 6d 65 2c 20 72 65 66 20 63 61 6c 6c 62 61 63 6b  me, ref callback
290b0 2c 20 72 65 66 20 70 43 6c 69 65 6e 74 44 61 74  , ref pClientDat
290c0 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a);..           
290d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
290e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
290f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29120 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
29130 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
29140 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29150 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29160 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29170 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
29180 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
29190 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
291a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
291b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
291c0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
291d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
291e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
291f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29200 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
29210 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29220 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29230 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29240 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29250 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d 0a 20 20 20  ame="zNew">..   
29260 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
29270 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
29280 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
29290 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20  ule.xRename" /> 
292a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
292b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
292c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
292d0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
292e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
292f0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29300 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29310 64 75 6c 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e  dule.xRename" />
29320 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29330 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
29340 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
29350 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
29360 72 72 6f 72 43 6f 64 65 20 78 52 65 6e 61 6d 65  rrorCode xRename
29370 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
29380 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
29390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
293a0 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
293b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
293c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
293d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
293e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
293f0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
29400 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
29410 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
29420 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
29430 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
29440 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
29450 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
29460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29470 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29480 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29490 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
294a0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
294b0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
294c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
294d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
294e0 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74 61  ule.xRename(pVta
294f0 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20  b, zNew);..     
29500 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29510 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29560 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29570 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29580 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29590 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
295a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
295b0 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
295c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
295d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
295e0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
295f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29600 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
29610 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29620 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29630 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29640 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e  e.xSavepoint" />
29650 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29660 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29670 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29680 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29690 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  "iSavepoint">.. 
296a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
296b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
296c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
296d0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
296e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
296f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29700 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29710 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
29720 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29730 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29740 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29750 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
29760 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
29770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29780 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
29790 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
297a0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
297b0 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20   xSavepoint(..  
297c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
297d0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
297e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
297f0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
29800 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
29810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29830 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29840 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
29850 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
29860 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
29870 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
29880 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
29890 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
298a0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
298b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
298c0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
298d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
298e0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
298f0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
29900 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
29910 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29920 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
29930 65 2e 78 53 61 76 65 70 6f 69 6e 74 28 70 56 74  e.xSavepoint(pVt
29940 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b  ab, iSavepoint);
29950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
29960 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
299b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
299c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
299d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
299e0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
299f0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29a00 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
29a10 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29a20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29a30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29a40 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
29a50 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
29a60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29a70 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
29a80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
29a90 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22  Module.xRelease"
29aa0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29ab0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29ac0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
29ad0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
29ae0 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22 3e  me="iSavepoint">
29af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29b00 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29b10 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29b20 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
29b30 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
29b40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29b50 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29b60 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
29b70 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
29b80 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29b90 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29ba0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65  tiveModule.xRele
29bb0 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ase" /> method..
29bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29bd0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29be0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
29bf0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29c00 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
29c10 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
29c20 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
29c30 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
29c40 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
29c50 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
29c60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29c70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c90 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
29ca0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
29cb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29cc0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29cd0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
29ce0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
29cf0 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
29d00 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
29d10 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
29d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d30 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
29d40 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
29d50 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
29d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d70 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
29d80 52 65 6c 65 61 73 65 28 70 56 74 61 62 2c 20 69  Release(pVtab, i
29d90 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20  Savepoint);..   
29da0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29db0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
29dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29e10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
29e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
29e30 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
29e40 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
29e50 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
29e60 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29e70 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
29e80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
29e90 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29ea0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
29eb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29ec0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29ed0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29ee0 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
29ef0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
29f00 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
29f10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
29f20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
29f30 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74 22  ame="iSavepoint"
29f40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29f50 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29f60 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29f70 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
29f80 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  ackTo" /> method
29f90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29fa0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
29fb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
29fc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
29fd0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29fe0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29ff0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
2a000 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d  RollbackTo" /> m
2a010 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a020 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2a030 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
2a040 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
2a050 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b  orCode xRollback
2a060 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  To(..           
2a070 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2a080 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2a090 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
2a0a0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
2a0b0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a0c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a0d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a0e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2a0f0 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
2a100 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
2a110 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a130 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2a140 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
2a150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a160 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
2a170 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a180 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a190 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
2a1a0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
2a1b0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
2a1c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a1d0 6e 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  n module.xRollba
2a1e0 63 6b 54 6f 28 70 56 74 61 62 2c 20 69 53 61 76  ckTo(pVtab, iSav
2a1f0 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  epoint);..      
2a200 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a210 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2a220 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a270 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2a280 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
2a290 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
2a2a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a2b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a2c0 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
2a2d0 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
2a2e0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2a2f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2a300 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a310 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
2a320 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
2a330 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a340 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
2a350 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
2a360 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
2a370 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
2a380 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
2a390 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a3a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2a3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2a400 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2a410 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
2a420 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
2a430 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
2a440 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
2a450 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
2a460 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2a470 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a480 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c   /// Throws an <
2a490 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74  see cref="Object
2a4a0 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
2a4b0 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20 6f 62  n" /> if this ob
2a4c0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20  ject..          
2a4d0 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68    /// instance h
2a4e0 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64  as been disposed
2a4f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a500 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2a510 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2a520 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
2a530 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
2a540 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2a550 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e   {..#if THROW_ON
2a560 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20  _DISPOSED..     
2a570 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
2a580 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
2a590 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a5b0 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
2a5c0 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
2a5d0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
2a5f0 65 6f 66 28 53 51 4c 69 74 65 4e 61 74 69 76 65  eof(SQLiteNative
2a600 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a  Module).Name);..
2a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a620 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
2a630 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a640 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a690 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a6a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a6b0 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73        /// Dispos
2a6c0 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  es of this objec
2a6d0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2a6e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
2a6f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2a700 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2a710 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67 22  name="disposing"
2a720 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a730 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
2a740 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
2a750 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
2a760 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
2a770 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
2a780 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20 6d 65  Dispose()" /> me
2a790 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66 20 74  thod.  Zero if t
2a7a0 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
2a7b0 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
2a7c0 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 72 6f 6d   /// called from
2a7d0 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d   the finalizer..
2a7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a7f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2a800 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 2f         private /
2a810 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74  * protected virt
2a820 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70  ual */ void Disp
2a830 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
2a840 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
2a850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a860 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
2a870 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
2a880 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
2a8a0 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
2a8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8c0 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
2a8d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2a8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a900 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2a910 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2a920 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67  // dispose manag
2a930 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
2a940 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
2a950 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2a960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a980 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
2a990 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
2a9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a9b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9f0 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61   // release unma
2aa00 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
2aa10 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
2aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
2aa30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2aa60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2aa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa80 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
2aa90 6d 6f 64 75 6c 65 20 69 73 20 6e 6f 74 20 6f 77  module is not ow
2aaa0 6e 65 64 20 62 79 20 75 73 3b 20 74 68 65 72 65  ned by us; there
2aab0 66 6f 72 65 2c 20 64 6f 20 6e 6f 74 0d 0a 20 20  fore, do not..  
2aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aad0 20 20 2f 2f 20 20 20 20 20 20 20 64 69 73 70 6f    //       dispo
2aae0 73 65 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  se it...        
2aaf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2ab00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab10 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 21      if (module !
2ab20 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab40 20 6d 6f 64 75 6c 65 20 3d 20 6e 75 6c 6c 3b 0d   module = null;.
2ab50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ab60 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
2ab70 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2ab80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2ab90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2aba0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2abb0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
2abc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ac10 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
2ac20 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  ructor..        
2ac30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ac40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ac50 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
2ac60 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2ac70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2ac80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ac90 20 20 20 20 20 20 20 20 20 20 20 20 7e 53 51 4c              ~SQL
2aca0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  iteNativeModule(
2acb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2acc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2acd0 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
2ace0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2acf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2ad00 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
2ad10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2ad20 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2ad30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ad40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2ad80 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2ad90 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
2ada0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2adb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2adc0 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
2add0 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 6e  version of the n
2ade0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
2adf0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 69  dule structure i
2ae00 6e 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  n use...        
2ae10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2ae20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2ae30 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
2ae40 69 6e 74 20 44 65 66 61 75 6c 74 4d 6f 64 75 6c  int DefaultModul
2ae50 65 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a 20  eVersion = 2;.. 
2ae60 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
2ae70 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
2ae80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aeb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aec0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2aed0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
2aee0 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
2aef0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2af00 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69       /// This fi
2af10 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20 73  eld is used to s
2af20 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65 20  tore the native 
2af30 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2af40 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
2af50 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
2af60 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
2af70 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
2af80 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2af90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2afa0 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76  vate UnsafeNativ
2afb0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2afc0 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76 65 4d 6f  _module nativeMo
2afd0 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dule;....       
2afe0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b030 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2b040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2b050 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65  his field is use
2b060 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 64  d to store the d
2b070 65 73 74 72 75 63 74 6f 72 20 64 65 6c 65 67 61  estructor delega
2b080 74 65 20 74 6f 20 62 65 20 70 61 73 73 65 64 20  te to be passed 
2b090 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
2b0a0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2b0b0 6c 69 62 72 61 72 79 20 76 69 61 20 74 68 65 20  library via the 
2b0c0 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
2b0d0 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
2b0e0 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
2b0f0 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  function...     
2b100 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2b110 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
2b120 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  te UnsafeNativeM
2b130 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 4d  ethods.xDestroyM
2b140 6f 64 75 6c 65 20 64 65 73 74 72 6f 79 4d 6f 64  odule destroyMod
2b150 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ule;....        
2b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b1a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b1b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2b1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2b1d0 69 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64  is field is used
2b1e0 20 74 6f 20 73 74 6f 72 65 20 61 20 70 6f 69 6e   to store a poin
2b1f0 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69 76  ter to the nativ
2b200 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
2b210 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
2b220 72 75 63 74 75 72 65 20 72 65 74 75 72 6e 65 64  ructure returned
2b230 20 62 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f   by the sqlite3_
2b240 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
2b250 65 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  e_module..      
2b260 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e 0d    /// function..
2b270 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2b280 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b290 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
2b2a0 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
2b2b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
2b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b300 2f 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54  ////....#if PLAT
2b310 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2b320 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f  EWORK..        /
2b330 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b340 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66        /// This f
2b350 69 65 6c 64 20 69 73 20 75 73 65 64 20 74 6f 20  ield is used to 
2b360 68 6f 6c 64 20 74 68 65 20 62 6c 6f 63 6b 20 6f  hold the block o
2b370 66 20 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 20  f native memory 
2b380 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0d 0a 20  that contains.. 
2b390 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e         /// the n
2b3a0 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d 6f  ative sqlite3_mo
2b3b0 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 61  dule structure a
2b3c0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2b3d0 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20  his object..    
2b3e0 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
2b3f0 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e   when running on
2b400 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
2b410 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
2b420 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2b430 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
2b440 69 76 61 74 65 20 49 6e 74 50 74 72 20 70 4e 61  ivate IntPtr pNa
2b450 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 23 65 6e  tiveModule;..#en
2b460 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  dif....        /
2b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b4c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b4d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
2b4e0 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
2b4f0 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
2b500 74 75 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61  tual table insta
2b510 6e 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0d  nces associated.
2b520 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
2b530 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
2b540 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
2b550 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
2b560 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a  3_vtab derived..
2b570 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75          /// stru
2b580 63 74 75 72 65 20 69 73 20 75 73 65 64 20 74 6f  cture is used to
2b590 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20 63   key into this c
2b5a0 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  ollection...    
2b5b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b5c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
2b5d0 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 49  ate Dictionary<I
2b5e0 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69 72  ntPtr, SQLiteVir
2b5f0 74 75 61 6c 54 61 62 6c 65 3e 20 74 61 62 6c 65  tualTable> table
2b600 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s;....        //
2b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b650 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2b660 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2b670 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
2b680 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20 74   field is used t
2b690 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72 74  o store the virt
2b6a0 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72  ual table cursor
2b6b0 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20   instances..    
2b6c0 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
2b6d0 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  ed with this mod
2b6e0 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76 65  ule.  The native
2b6f0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0d   pointer to the.
2b700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
2b710 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
2b720 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
2b730 72 65 20 69 73 20 75 73 65 64 20 74 6f 20 6b 65  re is used to ke
2b740 79 20 69 6e 74 6f 20 74 68 69 73 0d 0a 20 20 20  y into this..   
2b750 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 6c 65 63 74       /// collect
2b760 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2b770 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b780 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
2b790 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c  ctionary<IntPtr,
2b7a0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
2b7b0 62 6c 65 43 75 72 73 6f 72 3e 20 63 75 72 73 6f  bleCursor> curso
2b7c0 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  rs;....        /
2b7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b810 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2b820 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
2b840 73 20 66 69 65 6c 64 20 69 73 20 75 73 65 64 20  s field is used 
2b850 74 6f 20 73 74 6f 72 65 20 74 68 65 20 76 69 72  to store the vir
2b860 74 75 61 6c 20 74 61 62 6c 65 20 66 75 6e 63 74  tual table funct
2b870 69 6f 6e 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20  ion instances.. 
2b880 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63         /// assoc
2b890 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
2b8a0 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 63 61 73  module.  The cas
2b8b0 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 66 75  e-insensitive fu
2b8c0 6e 63 74 69 6f 6e 20 6e 61 6d 65 0d 0a 20 20 20  nction name..   
2b8d0 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65       /// and the
2b8e0 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
2b8f0 65 6e 74 73 20 28 77 69 74 68 20 2d 31 20 6d 65  ents (with -1 me
2b900 61 6e 69 6e 67 20 22 61 6e 79 22 29 20 61 72 65  aning "any") are
2b910 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20   used to..      
2b920 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20    /// construct 
2b930 74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74 20  the string that 
2b940 69 73 20 75 73 65 64 20 74 6f 20 6b 65 79 20 69  is used to key i
2b950 6e 74 6f 20 74 68 69 73 20 63 6f 6c 6c 65 63 74  nto this collect
2b960 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
2b970 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2b980 20 20 20 20 20 20 70 72 69 76 61 74 65 20 44 69        private Di
2b990 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
2b9a0 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 3e   SQLiteFunction>
2b9b0 20 66 75 6e 63 74 69 6f 6e 73 3b 0d 0a 20 20 20   functions;..   
2b9c0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2b9d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2b9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba20 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2ba30 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
2ba40 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
2ba50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2ba60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
2ba70 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
2ba80 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
2ba90 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
2baa0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2bab0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2bac0 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20  name="name">..  
2bad0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2bae0 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65  me of the module
2baf0 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  .  This paramete
2bb00 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c  r cannot be null
2bb10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2bb20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2bb30 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4d 6f   public SQLiteMo
2bb40 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d 65  dule(string name
2bb50 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2bb60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61            if (na
2bb70 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
2bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
2bb90 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
2bba0 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e 61  ullException("na
2bbb0 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me");....       
2bbc0 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20 3d       this.name =
2bbd0 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20   name;..        
2bbe0 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 73 20      this.tables 
2bbf0 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
2bc00 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56  <IntPtr, SQLiteV
2bc10 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b 0d  irtualTable>();.
2bc20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2bc30 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65 77 20  s.cursors = new 
2bc40 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74  Dictionary<IntPt
2bc50 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  r, SQLiteVirtual
2bc60 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b 0d  TableCursor>();.
2bc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2bc80 73 2e 66 75 6e 63 74 69 6f 6e 73 20 3d 20 6e 65  s.functions = ne
2bc90 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  w Dictionary<str
2bca0 69 6e 67 2c 20 53 51 4c 69 74 65 46 75 6e 63 74  ing, SQLiteFunct
2bcb0 69 6f 6e 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20  ion>();..       
2bcc0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2bcd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2bce0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2bcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
2bd30 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74       #region Int
2bd40 65 72 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20  ernal Methods.. 
2bd50 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2bd60 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2bd70 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69  / Calls the nati
2bd80 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  ve SQLite core l
2bd90 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20  ibrary in order 
2bda0 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 0d  to create a new.
2bdb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69 73  .        /// dis
2bdc0 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63  posable module c
2bdd0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d  ontaining the im
2bde0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
2bdf0 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  a virtual table.
2be00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2be10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2be20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2be30 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20  e="pDb">..      
2be40 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
2be50 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2be60 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74 6f 20  tion pointer to 
2be70 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
2be80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2be90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2bea0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
2beb0 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
2bec0 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
2bed0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2bee0 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
2bef0 62 6f 6f 6c 20 43 72 65 61 74 65 44 69 73 70 6f  bool CreateDispo
2bf00 73 61 62 6c 65 4d 6f 64 75 6c 65 28 0d 0a 20 20  sableModule(..  
2bf10 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2bf20 20 70 44 62 0d 0a 20 20 20 20 20 20 20 20 20 20   pDb..          
2bf30 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2bf40 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bf50 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c 65  disposableModule
2bf60 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2bf70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf80 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2bf90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
2bfa0 74 50 74 72 20 70 4e 61 6d 65 20 3d 20 49 6e 74  tPtr pName = Int
2bfb0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20  Ptr.Zero;....   
2bfc0 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2bfd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2bfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 4e 61               pNa
2bff0 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  me = SQLiteStrin
2c000 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
2c010 53 74 72 69 6e 67 28 6e 61 6d 65 29 3b 0d 0a 0d  String(name);...
2c020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c030 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2c040 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2c050 75 6c 65 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ule nativeModule
2c060 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
2c070 20 20 20 20 20 20 20 20 41 6c 6c 6f 63 61 74 65          Allocate
2c080 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 29 3b 0d  NativeModule();.
2c090 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c0a0 20 20 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65     destroyModule
2c0b0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2c0c0 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
2c0d0 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20  royModule(..    
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0f0 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b  xDestroyModule);
2c100 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
2c110 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
2c120 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
2c130 20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f      disposableMo
2c140 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  dule =..        
2c150 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
2c160 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2c170 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64  sqlite3_create_d
2c180 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65  isposable_module
2c190 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c1a0 20 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20             pDb, 
2c1b0 70 4e 61 6d 65 2c 20 72 65 66 20 6e 61 74 69 76  pName, ref nativ
2c1c0 65 4d 6f 64 75 6c 65 2c 20 49 6e 74 50 74 72 2e  eModule, IntPtr.
2c1d0 5a 65 72 6f 2c 20 64 65 73 74 72 6f 79 4d 6f 64  Zero, destroyMod
2c1e0 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ule);....       
2c1f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c200 28 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75 6c  (disposableModul
2c210 65 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e != IntPtr.Zero
2c220 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51 4c 49 54  );..#elif !SQLIT
2c230 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
2c240 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
2c250 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a  osableModule =..
2c260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c270 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
2c280 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
2c290 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
2c2a0 65 5f 6d 6f 64 75 6c 65 5f 69 6e 74 65 72 6f 70  e_module_interop
2c2b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c2c0 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
2c2d0 4e 61 6d 65 2c 20 41 6c 6c 6f 63 61 74 65 4e 61  Name, AllocateNa
2c2e0 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74 65 72 6f  tiveModuleIntero
2c2f0 70 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  p(),..          
2c300 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2c310 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72 73 69  iveModule.iVersi
2c320 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  on, nativeModule
2c330 2e 78 43 72 65 61 74 65 2c 0d 0a 20 20 20 20 20  .xCreate,..     
2c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c350 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2c360 43 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76 65 4d  Connect, nativeM
2c370 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
2c380 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c390 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c3a0 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65  Module.xDisconne
2c3b0 63 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  ct, nativeModule
2c3c0 2e 78 44 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20  .xDestroy,..    
2c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2c3f0 78 4f 70 65 6e 2c 20 6e 61 74 69 76 65 4d 6f 64  xOpen, nativeMod
2c400 75 6c 65 2e 78 43 6c 6f 73 65 2c 0d 0a 20 20 20  ule.xClose,..   
2c410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c420 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2c430 2e 78 46 69 6c 74 65 72 2c 20 6e 61 74 69 76 65  .xFilter, native
2c440 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 2c 0d 0a 20  Module.xNext,.. 
2c450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c460 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c470 6c 65 2e 78 45 6f 66 2c 20 6e 61 74 69 76 65 4d  le.xEof, nativeM
2c480 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 2c 0d 0a  odule.xColumn,..
2c490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4a0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2c4b0 75 6c 65 2e 78 52 6f 77 49 64 2c 20 6e 61 74 69  ule.xRowId, nati
2c4c0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2c4d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c4e0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c4f0 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 2c 20 6e  Module.xBegin, n
2c500 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e  ativeModule.xSyn
2c510 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
2c520 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c530 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 2c  eModule.xCommit,
2c540 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2c550 6f 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  ollback,..      
2c560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c570 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46   nativeModule.xF
2c580 69 6e 64 46 75 6e 63 74 69 6f 6e 2c 20 6e 61 74  indFunction, nat
2c590 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
2c5a0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2c5b0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c5c0 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
2c5d0 6e 74 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  nt, nativeModule
2c5e0 2e 78 52 65 6c 65 61 73 65 2c 0d 0a 20 20 20 20  .xRelease,..    
2c5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c600 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2c610 78 52 6f 6c 6c 62 61 63 6b 54 6f 2c 20 49 6e 74  xRollbackTo, Int
2c620 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73 74 72 6f  Ptr.Zero, destro
2c630 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 20 20 20  yModule);....   
2c640 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c650 75 72 6e 20 28 64 69 73 70 6f 73 61 62 6c 65 4d  urn (disposableM
2c660 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74 72 2e  odule != IntPtr.
2c670 5a 65 72 6f 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  Zero);..#else.. 
2c680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2c690 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c  hrow new NotImpl
2c6a0 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e  ementedException
2c6b0 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
2c6c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c6d0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
2c6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c700 69 66 20 28 70 4e 61 6d 65 20 21 3d 20 49 6e 74  if (pName != Int
2c710 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2c720 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c740 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
2c750 72 65 65 28 70 4e 61 6d 65 29 3b 0d 0a 20 20 20  ree(pName);..   
2c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c770 20 70 4e 61 6d 65 20 3d 20 49 6e 74 50 74 72 2e   pName = IntPtr.
2c780 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
2c790 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2c7a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2c7b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2c7c0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2c7d0 20 20 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 2f  ////////////////
2c810 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c820 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2c830 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20  vate Methods..  
2c840 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2c850 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2c860 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
2c870 63 61 6c 6c 65 64 20 62 79 20 74 68 65 20 53 51  called by the SQ
2c880 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2c890 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76  y when the nativ
2c8a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  e..        /// m
2c8b0 6f 64 75 6c 65 20 61 73 73 6f 63 69 61 74 65 64  odule associated
2c8c0 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
2c8d0 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 62 65  t instance is be
2c8e0 69 6e 67 20 64 65 73 74 72 6f 79 65 64 20 64 75  ing destroyed du
2c8f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  e..        /// t
2c900 6f 20 69 74 73 20 70 61 72 65 6e 74 20 63 6f 6e  o its parent con
2c910 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 63 6c  nection being cl
2c920 6f 73 65 64 2e 20 20 49 74 20 6d 61 79 20 61 6c  osed.  It may al
2c930 73 6f 20 62 65 20 63 61 6c 6c 65 64 20 62 79 0d  so be called by.
2c940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
2c950 20 22 76 74 73 68 69 6d 22 20 6d 6f 64 75 6c 65   "vtshim" module
2c960 20 69 66 2f 77 68 65 6e 20 74 68 65 20 73 71 6c   if/when the sql
2c970 69 74 65 33 5f 64 69 73 70 6f 73 65 5f 6d 6f 64  ite3_dispose_mod
2c980 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 0d 0a  ule() function..
2c990 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 63          /// is c
2c9a0 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  alled...        
2c9b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2c9c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2c9d0 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74  am name="pClient
2c9e0 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20 20 20  Data">..        
2c9f0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 75  /// The native u
2ca00 73 65 72 2d 64 61 74 61 20 70 6f 69 6e 74 65 72  ser-data pointer
2ca10 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2ca20 20 74 68 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73   this module, as
2ca30 20 69 74 20 77 61 73 0d 0a 20 20 20 20 20 20 20   it was..       
2ca40 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 74 6f   /// provided to
2ca50 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
2ca60 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
2ca70 65 20 6e 61 74 69 76 65 20 6d 6f 64 75 6c 65 20  e native module 
2ca80 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20  instance..      
2ca90 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61 74 65    /// was create
2caa0 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
2cab0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2cac0 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 78    private void x
2cad0 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65 28 0d 0a  DestroyModule(..
2cae0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2caf0 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 20 2f  tr pClientData /
2cb00 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
2cb10 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2cb20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cb30 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2cb40 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
2cb50 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 6a 75 73   this point, jus
2cb60 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  t make sure that
2cb70 20 74 68 69 73 20 6e 61 74 69 76 65 20 6d 6f 64   this native mod
2cb80 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ule..           
2cb90 20 2f 2f 20 20 20 20 20 20 20 68 61 6e 64 6c 65   //       handle
2cba0 20 69 73 20 6e 6f 74 20 72 65 75 73 65 64 2c 20   is not reused, 
2cbb0 6e 6f 72 20 70 61 73 73 65 64 20 69 6e 74 6f 20  nor passed into 
2cbc0 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20  the native..    
2cbd0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2cbe0 20 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65   sqlite3_dispose
2cbf0 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69  _module() functi
2cc00 6f 6e 20 6c 61 74 65 72 20 28 69 2e 65 2e 20 69  on later (i.e. i
2cc10 66 2f 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  f/when..        
2cc20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
2cc30 20 44 69 73 70 6f 73 65 28 29 20 6d 65 74 68 6f   Dispose() metho
2cc40 64 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  d of this object
2cc50 20 69 6e 73 74 61 6e 63 65 20 69 73 20 63 61 6c   instance is cal
2cc60 6c 65 64 29 2e 0d 0a 20 20 20 20 20 20 20 20 20  led)...         
2cc70 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2cc80 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64     disposableMod
2cc90 75 6c 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ule = IntPtr.Zer
2cca0 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  o;..        }...
2ccb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2cd10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2cd20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
2cd30 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  nd returns the n
2cd40 61 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64  ative sqlite_mod
2cd50 75 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73  ule structure us
2cd60 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
2cd70 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20   /// configured 
2cd80 28 6f 72 20 64 65 66 61 75 6c 74 29 20 3c 73 65  (or default) <se
2cd90 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2cda0 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  ativeModule" />.
2cdb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  .        /// int
2cdc0 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74  erface implement
2cdd0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
2cde0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2cdf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
2ce00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
2ce10 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71  // The native sq
2ce20 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75  lite_module stru
2ce30 63 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 20  cture using the 
2ce40 63 6f 6e 66 69 67 75 72 65 64 20 28 6f 72 0d 0a  configured (or..
2ce50 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 66 61          /// defa
2ce60 75 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22  ult) <see cref="
2ce70 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
2ce80 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
2ce90 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
2cea0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
2ceb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2cec0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2ced0 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
2cee0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2cef0 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63  te3_module Alloc
2cf00 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
2cf10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2cf20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cf30 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d   AllocateNativeM
2cf40 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76 65 4d  odule(GetNativeM
2cf50 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d 0a 20  oduleImpl());.. 
2cf60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2cf70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2cfc0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2cfd0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2cfe0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2cff0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2d000 20 43 72 65 61 74 65 73 20 61 6e 64 20 72 65 74   Creates and ret
2d010 75 72 6e 73 20 61 20 6d 65 6d 6f 72 79 20 62 6c  urns a memory bl
2d020 6f 63 6b 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ock obtained fro
2d030 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  m the SQLite cor
2d040 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c  e..        /// l
2d050 69 62 72 61 72 79 20 75 73 65 64 20 74 6f 20 73  ibrary used to s
2d060 74 6f 72 65 20 74 68 65 20 6e 61 74 69 76 65 20  tore the native 
2d070 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73  sqlite3_module s
2d080 74 72 75 63 74 75 72 65 20 66 6f 72 20 74 68 69  tructure for thi
2d090 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  s..        /// o
2d0a0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 77  bject instance w
2d0b0 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74  hen running on t
2d0c0 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
2d0d0 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  Framework...    
2d0e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2d0f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2d100 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2d110 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2d120 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
2d130 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
2d140 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
2d150 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2d160 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
2d170 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
2d180 72 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65  r AllocateNative
2d190 4d 6f 64 75 6c 65 49 6e 74 65 72 6f 70 28 29 0d  ModuleInterop().
2d1a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2d1b0 20 20 20 20 20 20 20 20 69 66 20 28 70 4e 61 74          if (pNat
2d1c0 69 76 65 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74  iveModule == Int
2d1d0 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2d1e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d1f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2d200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d210 20 48 41 43 4b 3a 20 4e 6f 20 65 61 73 79 20 77   HACK: No easy w
2d220 61 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ay to determine 
2d230 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
2d240 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
2d250 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2d260 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20 73   sqlite_module s
2d270 74 72 75 63 74 75 72 65 20 77 68 65 6e 20 72 75  tructure when ru
2d280 6e 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45  nning on the .NE
2d290 54 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  T..             
2d2a0 20 20 20 2f 2f 20 20 20 20 20 20 20 43 6f 6d 70     //       Comp
2d2b0 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 3b 20 74  act Framework; t
2d2c0 68 65 72 65 66 6f 72 65 2c 20 6a 75 73 74 20 62  herefore, just b
2d2d0 61 73 65 20 74 68 65 20 73 69 7a 65 0d 0a 20 20  ase the size..  
2d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d2f0 20 20 20 20 20 20 20 6f 6e 20 77 68 61 74 20 77         on what w
2d300 65 20 6b 6e 6f 77 3a 0d 0a 20 20 20 20 20 20 20  e know:..       
2d310 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d330 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20 6f        There is o
2d340 6e 65 20 69 6e 74 65 67 65 72 20 6d 65 6d 62 65  ne integer membe
2d350 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
2d360 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65      //       The
2d370 72 65 20 61 72 65 20 32 32 20 66 75 6e 63 74 69  re are 22 functi
2d380 6f 6e 20 70 6f 69 6e 74 65 72 20 6d 65 6d 62 65  on pointer membe
2d390 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs...           
2d3a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2d3b0 20 20 20 20 20 20 20 20 20 70 4e 61 74 69 76 65           pNative
2d3c0 4d 6f 64 75 6c 65 20 3d 20 53 51 4c 69 74 65 4d  Module = SQLiteM
2d3d0 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 32  emory.Allocate(2
2d3e0 33 20 2a 20 49 6e 74 50 74 72 2e 53 69 7a 65 29  3 * IntPtr.Size)
2d3f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d400 20 20 20 20 20 69 66 20 28 70 4e 61 74 69 76 65       if (pNative
2d410 4d 6f 64 75 6c 65 20 3d 3d 20 49 6e 74 50 74 72  Module == IntPtr
2d420 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2d430 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
2d440 77 20 6e 65 77 20 4f 75 74 4f 66 4d 65 6d 6f 72  w new OutOfMemor
2d450 79 45 78 63 65 70 74 69 6f 6e 28 22 73 71 6c 69  yException("sqli
2d460 74 65 33 5f 6d 6f 64 75 6c 65 22 29 3b 0d 0a 20  te3_module");.. 
2d470 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2d480 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d490 72 6e 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  rn pNativeModule
2d4a0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
2d4b0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
2d4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d500 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2d510 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2d520 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
2d530 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
2d540 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
2d550 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  ite_module struc
2d560 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a  ture using the..
2d570 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
2d580 69 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d  ified <see cref=
2d590 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2d5a0 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61  dule" /> interfa
2d5b0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
2d5c0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
2d5d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
2d5e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d5f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2d600 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
2d610 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2d620 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2d630 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
2d640 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
2d650 6e 74 61 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20  ntation to..    
2d660 20 20 20 20 2f 2f 2f 20 75 73 65 2e 0d 0a 20 20      /// use...  
2d670 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2d680 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2d690 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
2d6a0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
2d6b0 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c 65 20  e sqlite_module 
2d6c0 73 74 72 75 63 74 75 72 65 20 75 73 69 6e 67 20  structure using 
2d6d0 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
2d6e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
2d6f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2d700 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e  iveModule" /> in
2d710 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e  terface implemen
2d720 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
2d730 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2d740 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2d750 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2d760 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2d770 75 6c 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69  ule AllocateNati
2d780 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20  veModule(..     
2d790 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61         ISQLiteNa
2d7a0 74 69 76 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  tiveModule modul
2d7b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
2d7c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2d7d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2d7e0 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e 73 61  odule = new Unsa
2d7f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d800 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29  sqlite3_module()
2d810 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ;..            n
2d820 61 74 69 76 65 4d 6f 64 75 6c 65 2e 69 56 65 72  ativeModule.iVer
2d830 73 69 6f 6e 20 3d 20 44 65 66 61 75 6c 74 4d 6f  sion = DefaultMo
2d840 64 75 6c 65 56 65 72 73 69 6f 6e 3b 0d 0a 0d 0a  duleVersion;....
2d850 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2d860 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d  module != null).
2d870 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d890 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  nativeModule.xCr
2d8a0 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  eate = new Unsaf
2d8b0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d8c0 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Create(..       
2d8d0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d8e0 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a  le.xCreate);....
2d8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d900 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2d910 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
2d920 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2d930 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
2d940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2d950 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 29 3b  odule.xConnect);
2d960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d970 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2d980 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65  .xBestIndex = ne
2d990 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d9a0 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78  thods.xBestIndex
2d9b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2d9c0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 42         module.xB
2d9d0 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
2d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2d9f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
2da00 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2da10 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2da20 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  .xDisconnect(.. 
2da30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da40 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f     module.xDisco
2da50 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
2da60 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2da70 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
2da80 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2da90 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
2daa0 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
2dab0 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2dac0 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20  .xDestroy);.... 
2dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2dae0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65  ativeModule.xOpe
2daf0 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
2db00 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f 70 65  tiveMethods.xOpe
2db10 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2db20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2db30 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Open);....      
2db40 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2db50 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20  Module.xClose = 
2db60 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2db70 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d  Methods.xClose(.
2db80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2db90 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f       module.xClo
2dba0 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2dbb0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2dbc0 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
2dbd0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2dbe0 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
2dbf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dc00 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6c       module.xFil
2dc10 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
2dc20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2dc30 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65  odule.xNext = ne
2dc40 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2dc50 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20 20  thods.xNext(..  
2dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc70 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 29 3b    module.xNext);
2dc80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dc90 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2dca0 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
2dcb0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2dcc0 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45 6f 66  xEof(module.xEof
2dcd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2dce0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2dcf0 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77  le.xColumn = new
2dd00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2dd10 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20  hods.xColumn(.. 
2dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd30 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d     module.xColum
2dd40 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
2dd50 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dd60 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e 65 77  ule.xRowId = new
2dd70 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2dd80 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a 20 20  hods.xRowId(..  
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dda0 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 29    module.xRowId)
2ddb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ddc0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2ddd0 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65 77 20  e.xUpdate = new 
2dde0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ddf0 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a 20 20  ods.xUpdate(..  
2de00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de10 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65    module.xUpdate
2de20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2de30 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2de40 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
2de50 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2de60 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20  ods.xBegin(..   
2de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de80 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 29 3b   module.xBegin);
2de90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dea0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2deb0 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73  .xSync = new Uns
2dec0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2ded0 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20  .xSync(..       
2dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64               mod
2def0 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d 0a 20  ule.xSync);.... 
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2df10 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6d  ativeModule.xCom
2df20 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  mit = new Unsafe
2df30 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2df40 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20 20  ommit(..        
2df50 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2df60 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a  le.xCommit);....
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df80 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2df90 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73  llback = new Uns
2dfa0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2dfb0 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20  .xRollback(..   
2dfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dfd0 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63   module.xRollbac
2dfe0 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  k);....         
2dff0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e000 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
2e010 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
2e020 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69 6e  tiveMethods.xFin
2e030 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20  dFunction(..    
2e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e050 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  module.xFindFunc
2e060 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tion);....      
2e070 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e080 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d  Module.xRename =
2e090 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e0a0 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65  eMethods.xRename
2e0b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e0c0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52         module.xR
2e0d0 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  ename);....     
2e0e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e0f0 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
2e100 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  nt = new UnsafeN
2e110 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53 61  ativeMethods.xSa
2e120 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
2e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2e140 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 29  dule.xSavepoint)
2e150 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e160 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e170 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77  e.xRelease = new
2e180 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e190 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a  hods.xRelease(..
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1b0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65 6c 65      module.xRele
2e1c0 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
2e1d0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e1e0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2e1f0 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  o = new UnsafeNa
2e200 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
2e210 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
2e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2e230 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
2e240 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2e250 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
2e260 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
2e270 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e280 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e290 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55  .xCreate = new U
2e2a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e2b0 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20  ds.xCreate(..   
2e2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2d0 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20   xCreate);....  
2e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e2f0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
2e300 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
2e310 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2e320 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2e330 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f               xCo
2e340 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
2e350 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e360 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
2e370 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ex = new UnsafeN
2e380 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
2e390 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
2e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 42                xB
2e3b0 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  estIndex);....  
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e3d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63  tiveModule.xDisc
2e3e0 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73  onnect = new Uns
2e3f0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e400 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  .xDisconnect(.. 
2e410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e420 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b     xDisconnect);
2e430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e440 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e450 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20  .xDestroy = new 
2e460 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e470 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20  ods.xDestroy(.. 
2e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e490 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d     xDestroy);...
2e4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e4b0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f   nativeModule.xO
2e4c0 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
2e4d0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
2e4e0 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20 20 20  pen(xOpen);..   
2e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2e500 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65  iveModule.xClose
2e510 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e520 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73  iveMethods.xClos
2e530 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20  e(xClose);....  
2e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e550 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
2e560 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  er = new UnsafeN
2e570 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46 69  ativeMethods.xFi
2e580 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  lter(..         
2e590 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6c 74             xFilt
2e5a0 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  er);....        
2e5b0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e5c0 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e 65 77  dule.xNext = new
2e5d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e5e0 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65 78 74  hods.xNext(xNext
2e5f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2e600 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e610 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
2e620 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e630 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d 0a 20  xEof(xEof);.... 
2e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e650 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c  ativeModule.xCol
2e660 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  umn = new Unsafe
2e670 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2e680 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
2e690 20 20 20 20 20 20 20 20 20 20 20 20 78 43 6f 6c              xCol
2e6a0 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  umn);....       
2e6b0 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2e6c0 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e  odule.xRowId = n
2e6d0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e6e0 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 78 52  ethods.xRowId(xR
2e6f0 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  owId);....      
2e700 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e710 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d  Module.xUpdate =
2e720 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e730 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65  eMethods.xUpdate
2e740 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e750 20 20 20 20 20 20 20 78 55 70 64 61 74 65 29 3b         xUpdate);
2e760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e770 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e780 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e  .xBegin = new Un
2e790 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e7a0 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69 6e 29  s.xBegin(xBegin)
2e7b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2e7c0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2e7d0 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61  xSync = new Unsa
2e7e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e7f0 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d 0a 0d  xSync(xSync);...
2e800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e810 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2e820 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61  ommit = new Unsa
2e830 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e840 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20  xCommit(..      
2e850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
2e860 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ommit);....     
2e870 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e880 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2e890 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  k = new UnsafeNa
2e8a0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
2e8b0 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20  lback(..        
2e8c0 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f 6c              xRol
2e8d0 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20  lback);....     
2e8e0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e8f0 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
2e900 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61  ction = new Unsa
2e910 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e920 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a  xFindFunction(..
2e930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e940 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74 69 6f      xFindFunctio
2e950 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
2e960 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2e970 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65  ule.xRename = ne
2e980 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2e990 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a  thods.xRename(..
2e9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9b0 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d      xRename);...
2e9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9d0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53   nativeModule.xS
2e9e0 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55  avepoint = new U
2e9f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2ea00 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a  ds.xSavepoint(..
2ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea20 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74 29 3b      xSavepoint);
2ea30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ea40 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2ea50 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20  .xRelease = new 
2ea60 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ea70 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20  ods.xRelease(.. 
2ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea90 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d     xRelease);...
2eaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eab0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2eac0 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20  ollbackTo = new 
2ead0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2eae0 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28  ods.xRollbackTo(
2eaf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb00 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63 6b 54        xRollbackT
2eb10 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  o);..           
2eb20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2eb30 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 4d    return nativeM
2eb40 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
2eb50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eba0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2ebb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2ebc0 20 20 20 20 20 20 20 2f 2f 2f 20 43 72 65 61 74         /// Creat
2ebd0 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  es a copy of the
2ebe0 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
2ebf0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
2ec00 66 3d 22 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  f="UnsafeNativeM
2ec10 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
2ec20 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
2ec30 20 69 6e 73 74 61 6e 63 65 2c 0d 0a 20 20 20 20   instance,..    
2ec40 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 64 65      /// using de
2ec50 66 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61  fault implementa
2ec60 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 63 6f  tions for the co
2ec70 6e 74 61 69 6e 65 64 20 64 65 6c 65 67 61 74 65  ntained delegate
2ec80 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  s when..        
2ec90 2f 2f 2f 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a  /// necessary...
2eca0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
2ecb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ecc0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2ecd0 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20  "module">..     
2ece0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2ecf0 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74 69  cref="UnsafeNati
2ed00 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
2ed10 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  3_module" /> obj
2ed20 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
2ed30 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 63 6f 70   instance to cop
2ed40 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
2ed50 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ed60 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2ed70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2ed80 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
2ed90 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2eda0 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
2edb0 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20  le" /> object.. 
2edc0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
2edd0 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
2ede0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2edf0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55 6e        private Un
2ee00 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2ee10 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2ee20 20 43 6f 70 79 4e 61 74 69 76 65 4d 6f 64 75 6c   CopyNativeModul
2ee30 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2ee40 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ee50 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
2ee60 6c 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20  le module..     
2ee70 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2ee80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2ee90 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2eea0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64  hods.sqlite3_mod
2eeb0 75 6c 65 20 6e 65 77 4d 6f 64 75 6c 65 20 3d 0d  ule newModule =.
2eec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eed0 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2eee0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2eef0 5f 6d 6f 64 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20  _module();....  
2ef00 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2ef10 75 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 6d  ule.iVersion = m
2ef20 6f 64 75 6c 65 2e 69 56 65 72 73 69 6f 6e 3b 0d  odule.iVersion;.
2ef30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2ef40 65 77 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  ewModule.xCreate
2ef50 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2ef60 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61  iveMethods.xCrea
2ef70 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
2ef80 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 72       (module.xCr
2ef90 65 61 74 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  eate != null) ? 
2efa0 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20 3a  module.xCreate :
2efb0 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a 20 20   xCreate);....  
2efc0 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2efd0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
2efe0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2eff0 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
2f000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f010 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65    (module.xConne
2f020 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  ct != null) ? mo
2f030 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3a 20  dule.xConnect : 
2f040 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20  xConnect);....  
2f050 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2f060 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d  ule.xBestIndex =
2f070 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f080 65 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e  eMethods.xBestIn
2f090 64 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20  dex(..          
2f0a0 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42        (module.xB
2f0b0 65 73 74 49 6e 64 65 78 20 21 3d 20 6e 75 6c 6c  estIndex != null
2f0c0 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 73 74  ) ? module.xBest
2f0d0 49 6e 64 65 78 20 3a 20 78 42 65 73 74 49 6e 64  Index : xBestInd
2f0e0 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ex);....        
2f0f0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44      newModule.xD
2f100 69 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20  isconnect = new 
2f110 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2f120 6f 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28  ods.xDisconnect(
2f130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f140 20 20 28 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f    (module.xDisco
2f150 6e 6e 65 63 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  nnect != null) ?
2f160 20 6d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e   module.xDisconn
2f170 65 63 74 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  ect :..         
2f180 20 20 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65         xDisconne
2f190 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ct);....        
2f1a0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 44      newModule.xD
2f1b0 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e 73  estroy = new Uns
2f1c0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f1d0 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  .xDestroy(..    
2f1e0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f1f0 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 21 3d 20  ule.xDestroy != 
2f200 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f210 44 65 73 74 72 6f 79 20 3a 20 78 44 65 73 74 72  Destroy : xDestr
2f220 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2f230 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 4f      newModule.xO
2f240 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
2f250 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
2f260 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
2f270 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 4f        (module.xO
2f280 70 65 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  pen != null) ? m
2f290 6f 64 75 6c 65 2e 78 4f 70 65 6e 20 3a 20 78 4f  odule.xOpen : xO
2f2a0 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pen);....       
2f2b0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f2c0 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61  Close = new Unsa
2f2d0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f2e0 78 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20  xClose(..       
2f2f0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f300 2e 78 43 6c 6f 73 65 20 21 3d 20 6e 75 6c 6c 29  .xClose != null)
2f310 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65   ? module.xClose
2f320 20 3a 20 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20   : xClose);.... 
2f330 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f340 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e  dule.xFilter = n
2f350 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f360 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d  ethods.xFilter(.
2f370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f380 20 28 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72   (module.xFilter
2f390 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f3a0 6c 65 2e 78 46 69 6c 74 65 72 20 3a 20 78 46 69  le.xFilter : xFi
2f3b0 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
2f3c0 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f3d0 78 4e 65 78 74 20 3d 20 6e 65 77 20 55 6e 73 61  xNext = new Unsa
2f3e0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f3f0 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20 20  xNext(..        
2f400 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f410 78 4e 65 78 74 20 21 3d 20 6e 75 6c 6c 29 20 3f  xNext != null) ?
2f420 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3a 20   module.xNext : 
2f430 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  xNext);....     
2f440 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f450 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e 73 61  .xEof = new Unsa
2f460 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f470 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  xEof(..         
2f480 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f490 45 6f 66 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  Eof != null) ? m
2f4a0 6f 64 75 6c 65 2e 78 45 6f 66 20 3a 20 78 45 6f  odule.xEof : xEo
2f4b0 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  f);....         
2f4c0 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f     newModule.xCo
2f4d0 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  lumn = new Unsaf
2f4e0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f4f0 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20  Column(..       
2f500 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f510 2e 78 43 6f 6c 75 6d 6e 20 21 3d 20 6e 75 6c 6c  .xColumn != null
2f520 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75  ) ? module.xColu
2f530 6d 6e 20 3a 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a  mn : xColumn);..
2f540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f550 77 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d  wModule.xRowId =
2f560 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f570 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28  eMethods.xRowId(
2f580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f590 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64    (module.xRowId
2f5a0 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f5b0 6c 65 2e 78 52 6f 77 49 64 20 3a 20 78 52 6f 77  le.xRowId : xRow
2f5c0 49 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  Id);....        
2f5d0 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 55      newModule.xU
2f5e0 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  pdate = new Unsa
2f5f0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f600 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
2f610 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2f620 65 2e 78 55 70 64 61 74 65 20 21 3d 20 6e 75 6c  e.xUpdate != nul
2f630 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 55 70 64  l) ? module.xUpd
2f640 61 74 65 20 3a 20 78 55 70 64 61 74 65 29 3b 0d  ate : xUpdate);.
2f650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ...            n
2f660 65 77 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20  ewModule.xBegin 
2f670 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f680 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e  veMethods.xBegin
2f690 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f6a0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 42 65 67 69     (module.xBegi
2f6b0 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64  n != null) ? mod
2f6c0 75 6c 65 2e 78 42 65 67 69 6e 20 3a 20 78 42 65  ule.xBegin : xBe
2f6d0 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gin);....       
2f6e0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f6f0 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e 73 61 66  Sync = new Unsaf
2f700 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f710 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20 20  Sync(..         
2f720 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2f730 53 79 6e 63 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  Sync != null) ? 
2f740 6d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3a 20 78  module.xSync : x
2f750 53 79 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Sync);....      
2f760 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f770 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e  xCommit = new Un
2f780 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2f790 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  s.xCommit(..    
2f7a0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2f7b0 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 21 3d 20 6e  ule.xCommit != n
2f7c0 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
2f7d0 6f 6d 6d 69 74 20 3a 20 78 43 6f 6d 6d 69 74 29  ommit : xCommit)
2f7e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f7f0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c   newModule.xRoll
2f800 62 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66  back = new Unsaf
2f810 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f820 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20  Rollback(..     
2f830 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75             (modu
2f840 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 21 3d 20  le.xRollback != 
2f850 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f860 52 6f 6c 6c 62 61 63 6b 20 3a 20 78 52 6f 6c 6c  Rollback : xRoll
2f870 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  back);....      
2f880 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f890 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20  xFindFunction = 
2f8a0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2f8b0 4d 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e  Methods.xFindFun
2f8c0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
2f8d0 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f8e0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 21 3d  xFindFunction !=
2f8f0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f900 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3a 0d  xFindFunction :.
2f910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f920 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b   xFindFunction);
2f930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f940 6e 65 77 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  newModule.xRenam
2f950 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2f960 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e  tiveMethods.xRen
2f970 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2f980 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52        (module.xR
2f990 65 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 20 3f  ename != null) ?
2f9a0 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20   module.xRename 
2f9b0 3a 20 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20  : xRename);.... 
2f9c0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f9d0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
2f9e0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2f9f0 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70  veMethods.xSavep
2fa00 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
2fa10 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78         (module.x
2fa20 53 61 76 65 70 6f 69 6e 74 20 21 3d 20 6e 75 6c  Savepoint != nul
2fa30 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53 61 76  l) ? module.xSav
2fa40 65 70 6f 69 6e 74 20 3a 20 78 53 61 76 65 70 6f  epoint : xSavepo
2fa50 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  int);....       
2fa60 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2fa70 52 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 55 6e  Release = new Un
2fa80 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2fa90 73 2e 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20  s.xRelease(..   
2faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2fab0 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 21 3d  dule.xRelease !=
2fac0 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2fad0 78 52 65 6c 65 61 73 65 20 3a 20 78 52 65 6c 65  xRelease : xRele
2fae0 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ase);....       
2faf0 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2fb00 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77  RollbackTo = new
2fb10 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2fb20 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  hods.xRollbackTo
2fb30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2fb40 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c     (module.xRoll
2fb50 62 61 63 6b 54 6f 20 21 3d 20 6e 75 6c 6c 29 20  backTo != null) 
2fb60 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  ? module.xRollba
2fb70 63 6b 54 6f 20 3a 0d 0a 20 20 20 20 20 20 20 20  ckTo :..        
2fb80 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63          xRollbac
2fb90 6b 54 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  kTo);....       
2fba0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 4d       return newM
2fbb0 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  odule;..        
2fbc0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2fbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2fc20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2fc30 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73         /// Calls
2fc40 20 6f 6e 65 20 6f 66 20 74 68 65 20 76 69 72 74   one of the virt
2fc50 75 61 6c 20 74 61 62 6c 65 20 69 6e 69 74 69 61  ual table initia
2fc60 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64 73  lization methods
2fc70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2fc80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2fc90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2fca0 6d 65 3d 22 63 72 65 61 74 65 22 3e 0d 0a 20 20  me="create">..  
2fcb0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2fcc0 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65 20 3c  ro to call the <
2fcd0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2fce0 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
2fcf0 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20 20  reate" />..     
2fd00 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f     /// method; o
2fd10 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c 73  therwise, the <s
2fd20 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
2fd30 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
2fd40 6e 6e 65 63 74 22 20 2f 3e 0d 0a 20 20 20 20 20  nnect" />..     
2fd50 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69     /// method wi
2fd60 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  ll be called... 
2fd70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
2fd80 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
2fd90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44   <param name="pD
2fda0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b">..        ///
2fdb0 20 54 68 65 20 6e 61 74 69 76 65 20 64 61 74 61   The native data
2fdc0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2fdd0 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20  handle...       
2fde0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2fdf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2fe00 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a  m name="pAux">..
2fe10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2fe20 6f 72 69 67 69 6e 61 6c 20 6e 61 74 69 76 65 20  original native 
2fe30 70 6f 69 6e 74 65 72 20 76 61 6c 75 65 20 74 68  pointer value th
2fe40 61 74 20 77 61 73 20 70 72 6f 76 69 64 65 64 20  at was provided 
2fe50 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
2fe60 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
2fe70 74 65 5f 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c  te_module(), sql
2fe80 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
2fe90 6c 65 5f 76 32 28 29 20 6f 72 0d 0a 20 20 20 20  le_v2() or..    
2fea0 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
2feb0 63 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c  create_disposabl
2fec0 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e 63 74  e_module() funct
2fed0 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ions...        /
2fee0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2fef0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2ff00 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
2ff10 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
2ff20 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
2ff30 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54  s from the CREAT
2ff40 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
2ff50 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20  statement...    
2ff60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2ff70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2ff80 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22  aram name="argv"
2ff90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2ffa0 68 65 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  he array of stri
2ffb0 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f  ng arguments fro
2ffc0 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  m the CREATE VIR
2ffd0 54 55 41 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL TABLE..    
2ffe0 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e      /// statemen
2fff0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
30000 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
30010 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30020 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
30030 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
30040 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d  cess, this param
30050 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64  eter must be mod
30060 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20 74  ified to point t
30070 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20  o the newly..   
30080 20 20 20 20 20 2f 2f 2f 20 63 72 65 61 74 65 64       /// created
30090 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
300a0 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72  vtab derived str
300b0 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
300c0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
300d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
300e0 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
300f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70  ..        /// Up
30100 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73  on failure, this
30110 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20   parameter must 
30120 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 70  be modified to p
30130 6f 69 6e 74 20 74 6f 20 74 68 65 20 65 72 72 6f  oint to the erro
30140 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  r..        /// m
30150 65 73 73 61 67 65 2c 20 77 69 74 68 20 74 68 65  essage, with the
30160 20 75 6e 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f   underlying memo
30170 72 79 20 68 61 76 69 6e 67 20 62 65 65 6e 20 6f  ry having been o
30180 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
30190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71  ..        /// sq
301a0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66  lite3_malloc() f
301b0 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  unction...      
301c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
301d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
301e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
301f0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
30200 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
30210 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30220 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
30230 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
30240 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74  eErrorCode Creat
30250 65 4f 72 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  eOrConnect(..   
30260 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 63 72           bool cr
30270 65 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  eate,..         
30280 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c 0d 0a     IntPtr pDb,..
30290 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
302a0 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  tr pAux,..      
302b0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
302c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
302d0 50 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20  Ptr argv,..     
302e0 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74         ref IntPt
302f0 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
30300 20 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72        ref IntPtr
30310 20 70 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20   pError..       
30320 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
30330 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
30340 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
30350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30360 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
30370 6d 65 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  me = SQLiteStrin
30380 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38  g.StringFromUtf8
30390 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20  IntPtr(..       
303a0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
303b0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
303c0 2e 73 71 6c 69 74 65 33 5f 64 62 5f 66 69 6c 65  .sqlite3_db_file
303d0 6e 61 6d 65 28 70 44 62 2c 20 49 6e 74 50 74 72  name(pDb, IntPtr
303e0 2e 5a 65 72 6f 29 29 3b 0d 0a 0d 0a 20 20 20 20  .Zero));....    
303f0 20 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e              usin
30400 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  g (SQLiteConnect
30410 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d  ion connection =
30420 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65   new SQLiteConne
30430 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
30440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30450 70 44 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 66  pDb, fileName, f
30460 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alse))..        
30470 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
30490 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
304a0 65 20 74 61 62 6c 65 20 3d 20 6e 75 6c 6c 3b 0d  e table = null;.
304b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
304c0 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
304d0 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  r = null;....   
304e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304f0 20 69 66 20 28 28 63 72 65 61 74 65 20 26 26 20   if ((create && 
30500 43 72 65 61 74 65 28 63 6f 6e 6e 65 63 74 69 6f  Create(connectio
30510 6e 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20  n, pAux,..      
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30530 20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72 69        SQLiteStri
30540 6e 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46 72  ng.StringArrayFr
30550 6f 6d 55 74 66 38 53 69 7a 65 41 6e 64 49 6e 74  omUtf8SizeAndInt
30560 50 74 72 28 61 72 67 63 2c 0d 0a 20 20 20 20 20  Ptr(argc,..     
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 20 20 20 20 20 20 20 61 72 67 76 29 2c 20 72 65         argv), re
30590 66 20 74 61 62 6c 65 2c 20 72 65 66 20 65 72 72  f table, ref err
305a0 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72  or) == SQLiteErr
305b0 6f 72 43 6f 64 65 2e 4f 6b 29 20 7c 7c 0d 0a 20  orCode.Ok) ||.. 
305c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305d0 20 20 20 20 20 20 20 28 21 63 72 65 61 74 65 20         (!create 
305e0 26 26 20 43 6f 6e 6e 65 63 74 28 63 6f 6e 6e 65  && Connect(conne
305f0 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d 0a 20 20  ction, pAux,..  
30600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30610 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
30620 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 41 72 72  String.StringArr
30630 61 79 46 72 6f 6d 55 74 66 38 53 69 7a 65 41 6e  ayFromUtf8SizeAn
30640 64 49 6e 74 50 74 72 28 61 72 67 63 2c 0d 0a 20  dIntPtr(argc,.. 
30650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30660 20 20 20 20 20 20 20 20 20 20 20 61 72 67 76 29             argv)
30670 2c 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65 66  , ref table, ref
30680 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74   error) == SQLit
30690 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 0d  eErrorCode.Ok)).
306a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
306b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
306c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306d0 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c  if (table != nul
306e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
306f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30710 20 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62             pVtab
30720 20 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50 74 72   = TableToIntPtr
30730 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20  (table);..      
30740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30750 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
30760 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b  iteErrorCode.Ok;
30770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30780 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307a0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
307b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
307d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307e0 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74    pError = SQLit
307f0 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50  eString.Utf8IntP
30800 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20  trFromString(.. 
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
30830 6e 6f 20 74 61 62 6c 65 20 77 61 73 20 63 72 65  no table was cre
30840 61 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20  ated");..       
30850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30860 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30870 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
30890 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
308a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
308b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308c0 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
308d0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
308e0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65  tPtrFromString(e
308f0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
30900 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
30930 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74  .            cat
30940 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
30950 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63   /* NOTE: Must c
30960 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20  atch ALL. */..  
30970 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30980 20 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72               pEr
30990 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69  ror = SQLiteStri
309a0 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f  ng.Utf8IntPtrFro
309b0 6d 53 74 72 69 6e 67 28 65 2e 54 6f 53 74 72 69  mString(e.ToStri
309c0 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
309d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
309e0 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
309f0 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
30a00 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  r;..        }...
30a10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
30a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
30a70 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
30a80 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 6f 6e 65     /// Calls one
30a90 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
30aa0 74 61 62 6c 65 20 66 69 6e 61 6c 69 7a 61 74 69  table finalizati
30ab0 6f 6e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  on methods...   
30ac0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
30ad0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
30ae0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
30af0 73 74 72 6f 79 22 3e 0d 0a 20 20 20 20 20 20 20  stroy">..       
30b00 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
30b10 20 63 61 6c 6c 20 74 68 65 20 3c 73 65 65 20 63   call the <see c
30b20 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
30b30 67 65 64 4d 6f 64 75 6c 65 2e 44 65 73 74 72 6f  gedModule.Destro
30b40 79 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  y" />..        /
30b50 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72  // method; other
30b60 77 69 73 65 2c 20 74 68 65 0d 0a 20 20 20 20 20  wise, the..     
30b70 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
30b80 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
30b90 4d 6f 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65 63  Module.Disconnec
30ba0 74 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  t" /> method wil
30bb0 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  l be..        //
30bc0 2f 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20  / called...     
30bd0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
30be0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
30bf0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
30c00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
30c10 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
30c20 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
30c30 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
30c40 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
30c50 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
30c60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
30c70 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
30c80 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
30c90 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
30ca0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
30cb0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
30cc0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
30cd0 65 45 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72  eErrorCode Destr
30ce0 6f 79 4f 72 44 69 73 63 6f 6e 6e 65 63 74 28 0d  oyOrDisconnect(.
30cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
30d00 6c 20 64 65 73 74 72 6f 79 2c 0d 0a 20 20 20 20  l destroy,..    
30d10 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
30d20 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
30d30 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
30d40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
30d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
30d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d70 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
30d80 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c 65  le table = Table
30d90 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61 62  FromIntPtr(pVtab
30da0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
30db0 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20        if (table 
30dc0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
30dd0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30df0 20 69 66 20 28 28 64 65 73 74 72 6f 79 20 26 26   if ((destroy &&
30e00 20 28 44 65 73 74 72 6f 79 28 74 61 62 6c 65 29   (Destroy(table)
30e10 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
30e20 6f 64 65 2e 4f 6b 29 29 20 7c 7c 0d 0a 20 20 20  ode.Ok)) ||..   
30e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e40 20 20 20 20 20 28 21 64 65 73 74 72 6f 79 20 26       (!destroy &
30e50 26 20 28 44 69 73 63 6f 6e 6e 65 63 74 28 74 61  & (Disconnect(ta
30e60 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45 72  ble) == SQLiteEr
30e70 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 29 0d 0a 20  rorCode.Ok))).. 
30e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
30ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
30eb0 20 28 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c   (tables != null
30ec0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30ee0 61 62 6c 65 73 2e 52 65 6d 6f 76 65 28 70 56 74  ables.Remove(pVt
30ef0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
30f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f10 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
30f20 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20  orCode.Ok;..    
30f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30f50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30f60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
30f70 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
30f80 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75  n e) /* NOTE: Mu
30f90 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f  st catch ALL. */
30fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30fc0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
30fd0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74       // NOTE: At
30fe0 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 74 68 65   this point, the
30ff0 72 65 20 69 73 20 6e 6f 20 77 61 79 20 74 6f 20  re is no way to 
31000 72 65 70 6f 72 74 20 74 68 65 20 65 72 72 6f 72  report the error
31010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31020 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 64 69    //       condi
31030 74 69 6f 6e 20 62 61 63 6b 20 74 6f 20 74 68 65  tion back to the
31040 20 63 61 6c 6c 65 72 3b 20 74 68 65 72 65 66 6f   caller; therefo
31050 72 65 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20  re, use the..   
31060 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
31070 20 20 20 20 20 20 6c 6f 67 67 69 6e 67 20 66 61        logging fa
31080 63 69 6c 69 74 79 20 69 6e 73 74 65 61 64 2e 0d  cility instead..
31090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
310a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
310b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
310c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
310d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310e0 20 69 66 20 28 4c 6f 67 45 78 63 65 70 74 69 6f   if (LogExceptio
310f0 6e 73 4e 6f 54 68 72 6f 77 29 0d 0a 20 20 20 20  nsNoThrow)..    
31100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31110 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31120 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 74 68             /* th
31130 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
31140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31150 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73  SQLiteLog.LogMes
31160 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e  sage(SQLiteBase.
31170 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c  COR_E_EXCEPTION,
31180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
311a0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
311b0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311d0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
311e0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
311f0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31210 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
31220 6e 20 69 6e 20 5c 22 7b 30 7d 5c 22 20 6d 65 74  n in \"{0}\" met
31230 68 6f 64 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  hod: {1}",..    
31240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31250 20 20 20 20 20 20 20 20 64 65 73 74 72 6f 79 20          destroy 
31260 3f 20 22 78 44 65 73 74 72 6f 79 22 20 3a 20 22  ? "xDestroy" : "
31270 78 44 69 73 63 6f 6e 6e 65 63 74 22 2c 20 65 29  xDisconnect", e)
31280 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31290 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
312a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
312b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
312c0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
312d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
312e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
312f0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
31300 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31310 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31320 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
31330 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
31340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31350 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74 61    FreeTable(pVta
31360 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
31370 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31380 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
31390 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
313a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
313b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
313c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
313f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
31400 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
31410 20 53 74 61 74 69 63 20 45 72 72 6f 72 20 48 61   Static Error Ha
31420 6e 64 6c 69 6e 67 20 48 65 6c 70 65 72 20 4d 65  ndling Helper Me
31430 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
31440 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
31450 20 20 20 20 20 20 2f 2f 2f 20 41 72 72 61 6e 67        /// Arrang
31460 65 73 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  es for the speci
31470 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
31480 67 65 20 74 6f 20 62 65 20 70 6c 61 63 65 64 20  ge to be placed 
31490 69 6e 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  into the..      
314a0 20 20 2f 2f 2f 20 7a 45 72 72 4d 73 67 20 66 69    /// zErrMsg fi
314b0 65 6c 64 20 6f 66 20 61 20 73 71 6c 69 74 65 33  eld of a sqlite3
314c0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
314d0 72 75 63 74 75 72 65 2c 20 66 72 65 65 69 6e 67  ructure, freeing
314e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
314f0 2f 20 65 78 69 73 74 69 6e 67 20 65 72 72 6f 72  / existing error
31500 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79   message, if any
31510 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
31520 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
31530 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
31540 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
31550 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
31560 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
31570 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
31580 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
31590 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
315a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
315b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
315c0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
315d0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
315e0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
315f0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
31600 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
31610 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
31620 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
31630 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31640 61 6d 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e  ame="logErrors">
31650 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
31660 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65  n-zero if this e
31670 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f  rror message sho
31680 75 6c 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67  uld also be logg
31690 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  ed using the..  
316a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
316b0 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20  ref="SQLiteLog" 
316c0 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
316d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
316e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
316f0 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63  ram name="logExc
31700 65 70 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20  eptions">..     
31710 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
31720 69 66 20 63 61 75 67 68 74 20 65 78 63 65 70 74  if caught except
31730 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c  ions should be l
31740 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d  ogged using the.
31750 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
31760 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f  e cref="SQLiteLo
31770 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20  g" /> class...  
31780 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
31790 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
317a0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
317b0 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
317c0 2f 20 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73  / The error mess
317d0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
317e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
317f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
31800 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
31810 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
31820 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  cess...        /
31830 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
31840 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
31850 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61  tatic bool SetTa
31860 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
31870 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64         SQLiteMod
31880 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20  ule module,..   
31890 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
318a0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
318b0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f      bool logErro
318c0 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs,..           
318d0 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74 69   bool logExcepti
318e0 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ons,..          
318f0 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a    string error..
31900 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
31910 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31920 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
31930 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31940 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f            if (lo
31950 67 45 72 72 6f 72 73 29 0d 0a 20 20 20 20 20 20  gErrors)..      
31960 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31980 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65   SQLiteLog.LogMe
31990 73 73 61 67 65 28 53 51 4c 69 74 65 45 72 72 6f  ssage(SQLiteErro
319a0 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20  rCode.Error,..  
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319c0 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68        HelperMeth
319d0 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
319e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
319f0 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
31a00 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
31a10 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
31a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a30 22 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 65  "Virtual table e
31a40 72 72 6f 72 3a 20 7b 30 7d 22 2c 20 65 72 72 6f  rror: {0}", erro
31a50 72 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  r)); /* throw */
31a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31a70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
31a80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31a90 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
31aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31ab0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
31ac0 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
31ad0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31ae0 20 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20     bool success 
31af0 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
31b00 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e 65        IntPtr pNe
31b10 77 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e  wError = IntPtr.
31b20 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
31b30 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
31b40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31b50 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74           if (pVt
31b60 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ab == IntPtr.Zer
31b70 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
31b80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
31b90 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
31ba0 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
31bb0 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  set = 0;....    
31bc0 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
31bd0 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
31be0 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
31bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31c00 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49 6e        offset, In
31c10 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65 6f  tPtr.Size, sizeo
31c20 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
31c30 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
31c40 65 74 20 3d 20 53 51 4c 69 74 65 4d 61 72 73 68  et = SQLiteMarsh
31c50 61 6c 2e 4e 65 78 74 4f 66 66 73 65 74 4f 66 28  al.NextOffsetOf(
31c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31c70 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 73 69        offset, si
31c80 7a 65 6f 66 28 69 6e 74 29 2c 20 49 6e 74 50 74  zeof(int), IntPt
31c90 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
31ca0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
31cb0 74 72 20 70 4f 6c 64 45 72 72 6f 72 20 3d 20 53  tr pOldError = S
31cc0 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 52 65 61  QLiteMarshal.Rea
31cd0 64 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f  dIntPtr(pVtab, o
31ce0 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
31cf0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
31d00 4f 6c 64 45 72 72 6f 72 20 21 3d 20 49 6e 74 50  OldError != IntP
31d10 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
31d20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d40 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72   SQLiteMemory.Fr
31d50 65 65 28 70 4f 6c 64 45 72 72 6f 72 29 3b 20 70  ee(pOldError); p
31d60 4f 6c 64 45 72 72 6f 72 20 3d 20 49 6e 74 50 74  OldError = IntPt
31d70 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
31d80 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
31d90 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65  iteMarshal.Write
31da0 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66  IntPtr(pVtab, of
31db0 66 73 65 74 2c 20 70 4f 6c 64 45 72 72 6f 72 29  fset, pOldError)
31dc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
31dd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
31de0 20 20 20 20 20 20 20 20 69 66 20 28 65 72 72 6f          if (erro
31df0 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
31e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e10 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a  return true;....
31e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e30 70 4e 65 77 45 72 72 6f 72 20 3d 20 53 51 4c 69  pNewError = SQLi
31e40 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
31e50 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 72  PtrFromString(er
31e60 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
31e70 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
31e80 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
31e90 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20  (pVtab, offset, 
31ea0 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pNewError);..   
31eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63               suc
31ec0 63 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20  cess = true;..  
31ed0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31ee0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
31ef0 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20  Exception e) /* 
31f00 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68  NOTE: Must catch
31f10 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ALL. */..      
31f20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31f30 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
31f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
31f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31f60 20 20 20 20 20 69 66 20 28 6c 6f 67 45 78 63 65       if (logExce
31f70 70 74 69 6f 6e 73 29 0d 0a 20 20 20 20 20 20 20  ptions)..       
31f80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31fa0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f          SQLiteLo
31fb0 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c  g.LogMessage(SQL
31fc0 69 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58  iteBase.COR_E_EX
31fd0 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20  CEPTION,..      
31fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ff0 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68        HelperMeth
32000 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
32010 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
32020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
32030 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
32040 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
32050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32060 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20          "Caught 
32070 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 53  exception in \"S
32080 65 74 54 61 62 6c 65 45 72 72 6f 72 5c 22 20 6d  etTableError\" m
32090 65 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d 0a 20 20  ethod: {0}",..  
320a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
320b0 20 20 20 20 20 20 20 20 20 20 65 29 29 3b 20 2f            e)); /
320c0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
320d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
320e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
320f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32100 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
32110 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
32120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32130 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
32140 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
32150 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32170 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
32180 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32190 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73            if (!s
321a0 75 63 63 65 73 73 20 26 26 20 28 70 4e 65 77 45  uccess && (pNewE
321b0 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  rror != IntPtr.Z
321c0 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
321d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
321e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
321f0 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
32200 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pNewError);..   
32210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32220 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49 6e 74   pNewError = Int
32230 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
32240 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
32250 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
32260 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
32270 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20 20 20  n success;..    
32280 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32290 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
322a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
322e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
322f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
32300 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20  rranges for the 
32310 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20  specified error 
32320 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c  message to be pl
32330 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20  aced into the.. 
32340 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d         /// zErrM
32350 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71  sg field of a sq
32360 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
32370 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72  ed structure, fr
32380 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  eeing the..     
32390 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20     /// existing 
323a0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69  error message, i
323b0 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
323c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
323d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
323e0 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
323f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
32400 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
32410 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
32420 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
32430 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20  o be used...    
32440 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32460 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
32470 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32480 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
32490 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
324a0 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
324b0 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20  tance used to.. 
324c0 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75         /// looku
324d0 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  p the native poi
324e0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
324f0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
32500 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
32510 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32520 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32530 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
32540 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
32550 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
32560 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
32570 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
32580 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
32590 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
325a0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
325b0 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
325c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
325d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
325e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
325f0 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
32600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
32610 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
32620 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
32630 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
32640 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32650 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32660 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32670 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32680 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32690 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
326a0 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
326b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
326c0 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
326d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
326e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
326f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
32700 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
32710 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
32720 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
32730 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
32740 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
32750 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  l SetTableError(
32760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
32770 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
32780 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32790 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
327a0 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20  le table,..     
327b0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
327c0 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
327d0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65      bool logExce
327e0 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20  ptions,..       
327f0 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
32800 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
32810 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
32820 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
32830 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
32840 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
32850 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
32860 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
32870 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e 4e   pVtab = table.N
32880 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  ativeHandle;....
32890 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
328a0 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
328b0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
328c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
328d0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
328e0 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61      return SetTa
328f0 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
32900 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
32910 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72  e, pVtab, logErr
32920 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f  ors, logExceptio
32930 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ns, error);..   
32940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32950 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32990 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
329a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
329b0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
329c0 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
329d0 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
329e0 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
329f0 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
32a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
32a10 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
32a20 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32a30 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
32a40 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
32a50 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
32a60 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
32a70 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
32a80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
32a90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
32aa0 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
32ab0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32ac0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
32ad0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
32ae0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
32af0 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
32b00 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32b10 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32b20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
32b30 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
32b40 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
32b50 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
32b60 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
32b70 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
32b80 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
32b90 75 73 65 64 20 74 6f 20 67 65 74 20 74 68 65 20  used to get the 
32ba0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
32bb0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
32bc0 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
32bd0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
32be0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
32bf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32c00 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
32c10 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a  e="logErrors">..
32c20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
32c30 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72  zero if this err
32c40 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c  or message shoul
32c50 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64  d also be logged
32c60 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
32c70 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
32c80 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e  f="SQLiteLog" />
32c90 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
32ca0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32cb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
32cc0 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70  m name="logExcep
32cd0 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20  tions">..       
32ce0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
32cf0 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f   caught exceptio
32d00 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ns should be log
32d10 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
32d20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
32d30 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
32d40 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
32d50 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32d70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
32d80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32d90 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  The error messag
32da0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
32db0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32dc0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
32dd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
32de0 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
32df0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32e00 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
32e10 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
32e20 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73  tic bool SetCurs
32e30 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
32e40 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
32e50 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
32e60 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
32e70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
32e80 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
32e90 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
32ea0 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74    bool logExcept
32eb0 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ions,..         
32ec0 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
32ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
32ee0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32ef0 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
32f00 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or == IntPtr.Zer
32f10 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
32f20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
32f30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32f40 20 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d 20   IntPtr pVtab = 
32f50 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28  TableFromCursor(
32f60 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72 29  module, pCursor)
32f70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32f80 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e   if (pVtab == In
32f90 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
32fa0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32fb0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
32fc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32fd0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a  SetTableError(..
32fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ff0 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c  module, pVtab, l
33000 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63  ogErrors, logExc
33010 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b  eptions, error);
33020 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
33030 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33090 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
330a0 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f   /// Arranges fo
330b0 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
330c0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
330d0 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20   be placed into 
330e0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
330f0 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f   zErrMsg field o
33100 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  f a sqlite3_vtab
33110 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
33120 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d  re, freeing the.
33130 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69  .        /// exi
33140 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73  sting error mess
33150 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  age, if any...  
33160 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
33170 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
33180 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
33190 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
331a0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
331b0 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
331c0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
331d0 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e  ance to be used.
331e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
331f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
33200 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
33210 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
33220 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
33230 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
33240 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
33250 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
33260 63 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20  ce used to..    
33270 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74      /// lookup t
33280 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
33290 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
332a0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
332b0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
332c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
332d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
332e0 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f  am name="logErro
332f0 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rs">..        //
33300 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
33310 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  is error message
33320 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20   should also be 
33330 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
33340 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33350 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
33360 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
33370 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33380 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33390 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
333a0 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20  gExceptions">.. 
333b0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
333c0 65 72 6f 20 69 66 20 63 61 75 67 68 74 20 65 78  ero if caught ex
333d0 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ceptions should 
333e0 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
333f0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
33400 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
33410 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
33420 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33430 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
33440 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
33450 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
33460 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20    /// The error 
33470 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  message...      
33480 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
33490 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
334a0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
334b0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
334c0 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
334d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
334e0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
334f0 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53  te static bool S
33500 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  etCursorError(..
33510 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
33520 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
33530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
33540 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
33550 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a  Cursor cursor,..
33560 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
33570 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20   logErrors,..   
33580 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
33590 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20  gExceptions,..  
335a0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
335b0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
335c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
335d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
335e0 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c   (cursor == null
335f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
33600 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
33610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33620 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 20 3d  IntPtr pCursor =
33630 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65 48 61   cursor.NativeHa
33640 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
33650 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72       if (pCursor
33660 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
33670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33680 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
33690 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
336a0 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f 72 45  eturn SetCursorE
336b0 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
336c0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70         module, p
336d0 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72 72 6f 72  Cursor, logError
336e0 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  s, logExceptions
336f0 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
33700 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
33710 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
33720 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
33730 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33780 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
33790 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 6d  on Protected Mem
337a0 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 23 72  bers..        #r
337b0 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20 48 65 6c  egion Module Hel
337c0 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
337d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
337e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
337f0 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
33800 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
33810 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
33820 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
33830 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
33840 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
33850 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 63 72   be used when cr
33860 65 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76  eating the nativ
33870 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
33880 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
33890 72 75 63 74 75 72 65 2e 20 20 44 65 72 69 76 65  ructure.  Derive
338a0 64 20 63 6c 61 73 73 65 73 20 6d 61 79 20 6f 76  d classes may ov
338b0 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 68  erride this meth
338c0 6f 64 20 74 6f 20 73 75 70 70 6c 79 20 61 6e 0d  od to supply an.
338d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 74  .        /// alt
338e0 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74  ernate implement
338f0 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 3c 73  ation for the <s
33900 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
33910 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
33920 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
33930 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20  terface...      
33940 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
33950 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
33960 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33970 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
33980 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
33990 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
339a0 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61  rface implementa
339b0 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20  tion to..       
339c0 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 77 68 65   /// be used whe
339d0 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20 74 68 65  n populating the
339e0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
339f0 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
33a00 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 2f  .  If..        /
33a10 2f 2f 20 74 68 65 20 72 65 74 75 72 6e 65 64 20  // the returned 
33a20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 74  value is null, t
33a30 68 65 20 70 72 69 76 61 74 65 20 6d 65 74 68 6f  he private metho
33a40 64 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ds provided by t
33a50 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
33a60 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
33a70 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
33a80 73 20 61 6e 64 20 72 65 6c 61 74 69 6e 67 20 74  s and relating t
33a90 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
33aa0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
33ab0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
33ac0 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20  e" /> interface 
33ad0 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f   will be used to
33ae0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
33af0 65 61 74 65 20 74 68 65 20 6e 65 63 65 73 73 61  eate the necessa
33b00 72 79 20 64 65 6c 65 67 61 74 65 73 2e 0d 0a 20  ry delegates... 
33b10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
33b20 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
33b30 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
33b40 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
33b50 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65 4d 6f  dule GetNativeMo
33b60 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20 20  duleImpl()..    
33b70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33b80 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 20     return null; 
33b90 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65  /* NOTE: Use the
33ba0 20 62 75 69 6c 74 2d 69 6e 20 64 65 66 61 75 6c   built-in defaul
33bb0 74 20 64 65 6c 65 67 61 74 65 73 2e 20 2a 2f 0d  t delegates. */.
33bc0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
33bd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
33be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33c20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
33c30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33c40 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
33c50 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
33c60 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33c70 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a  tiveModule" />..
33c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
33c90 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61  rface implementa
33ca0 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f 6e 64 69  tion correspondi
33cb0 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  ng to the curren
33cc0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  t..        /// <
33cd0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
33ce0 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
33cf0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
33d00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
33d10 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33d20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33d30 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
33d40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33d50 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
33d60 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
33d70 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  ntation..       
33d80 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69   /// correspondi
33d90 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  ng to the curren
33da0 74 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  t <see cref="SQL
33db0 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
33dc0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
33dd0 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  / instance...   
33de0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
33df0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
33e00 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
33e10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
33e20 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d  le CreateNativeM
33e30 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20  oduleImpl()..   
33e40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
33e50 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
33e60 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
33e70 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
33e80 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
33e90 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
33ea0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33ef0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61        #region Na
33f00 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c 70 65  tive Table Helpe
33f10 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
33f20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33f30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
33f40 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69 76 65  locates a native
33f50 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
33f60 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
33f70 61 6e 64 20 72 65 74 75 72 6e 73 20 61 0d 0a 20  and returns a.. 
33f80 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
33f90 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e  e pointer to it.
33fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33fb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33fc0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
33fd0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e  .        /// A n
33fe0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
33ff0 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65   a native sqlite
34000 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
34010 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
34020 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
34030 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
34040 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
34050 50 74 72 20 41 6c 6c 6f 63 61 74 65 54 61 62 6c  Ptr AllocateTabl
34060 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
34070 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
34080 73 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  size = Marshal.S
34090 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
340a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
340b0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
340c0 64 73 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 29  ds.sqlite3_vtab)
340d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
340e0 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 4d    return SQLiteM
340f0 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73  emory.Allocate(s
34100 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ize);..        }
34110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
34120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34160 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
34170 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34180 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 73 20        /// Zeros 
34190 6f 75 74 20 74 68 65 20 66 69 65 6c 64 73 20 6f  out the fields o
341a0 66 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  f a native sqlit
341b0 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
341c0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
341d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
341e0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
341f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
34200 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
34210 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
34220 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69  nter to the nati
34230 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
34240 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
34250 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e to..        //
34260 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  / zero...       
34270 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
34280 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
34290 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 5a 65   virtual void Ze
342a0 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  roTable(..      
342b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
342c0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
342d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
342e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
342f0 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
34300 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
34310 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
34320 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
34330 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
34340 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
34350 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
34360 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73  tPtr(pVtab, offs
34370 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  et, IntPtr.Zero)
34380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34390 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
343a0 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
343b0 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
343c0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
343d0 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
343e0 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
343f0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
34400 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
34410 32 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  2(pVtab, offset,
34420 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   0);....        
34430 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
34440 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
34450 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
34460 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
34470 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
34480 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
34490 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
344a0 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
344b0 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66  ntPtr(pVtab, off
344c0 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  set, IntPtr.Zero
344d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
344e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
344f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
34540 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
34550 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e     /// Frees a n
34560 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
34570 61 62 20 73 74 72 75 63 74 75 72 65 20 75 73 69  ab structure usi
34580 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65 64 20  ng the provided 
34590 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
345a0 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  /// pointer to i
345b0 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
345c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
345d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
345e0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
345f0 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
34600 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
34610 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
34620 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
34630 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
34640 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
34650 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
34660 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65  virtual void Fre
34670 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  eTable(..       
34680 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
34690 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  b..            )
346a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
346b0 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
346c0 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 6e 75  eError(pVtab, nu
346d0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
346e0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
346f0 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ree(pVtab);..   
34700 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34710 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
34720 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34770 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
34780 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72 20 48   Native Cursor H
34790 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
347a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
347b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
347c0 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61  / Allocates a na
347d0 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
347e0 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
347f0 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 0d 0a   structure and..
34800 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
34810 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  rns a native poi
34820 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20  nter to it...   
34830 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
34840 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
34850 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34860 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65      /// A native
34870 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61   pointer to a na
34880 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
34890 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
348a0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
348b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
348c0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
348d0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
348e0 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 43 75  ntPtr AllocateCu
348f0 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20  rsor()..        
34900 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
34910 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61  nt size = Marsha
34920 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
34930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34940 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
34950 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74  thods.sqlite3_vt
34960 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a  ab_cursor));....
34970 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
34980 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e  rn SQLiteMemory.
34990 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d  Allocate(size);.
349a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
349b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
349c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34a00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
34a10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
34a20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e 61 74 69  /// Frees a nati
34a30 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ve sqlite3_vtab_
34a40 63 75 72 73 6f 72 20 73 74 72 75 63 74 75 72 65  cursor structure
34a50 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 76 69   using the provi
34a60 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ded..        ///
34a70 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
34a80 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  to it...        
34a90 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34ab0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
34ac0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
34ad0 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  A native pointer
34ae0 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
34af0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
34b00 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
34b10 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
34b20 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
34b30 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
34b40 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65 43 75  tual void FreeCu
34b50 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rsor(..         
34b60 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
34b70 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
34b80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
34b90 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
34ba0 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75 72 73  emory.Free(pCurs
34bb0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
34bc0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
34bd0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
34be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34c30 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63    #region Static
34c40 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65   Table Lookup Me
34c50 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
34c60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34c70 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
34c80 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
34c90 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34ca0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
34cb0 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
34cc0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
34cd0 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e  e based on the n
34ce0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
34cf0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
34d00 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20  b_cursor..      
34d10 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74    /// derived st
34d20 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
34d30 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
34d40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
34d50 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
34d60 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
34d70 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
34d80 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
34d90 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
34da0 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
34db0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34dc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34dd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
34de0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
34df0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
34e00 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34e10 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
34e20 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
34e30 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
34e40 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f 20 72   from which to r
34e50 65 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 70  ead the native p
34e60 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34e70 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34e80 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
34e90 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34ea0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34eb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
34ec0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
34ed0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
34ee0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34ef0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
34f00 76 65 64 20 73 74 72 75 63 74 75 72 65 20 2d 4f  ved structure -O
34f10 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  R-..        /// 
34f20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
34f30 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74  r.Zero" /> if it
34f40 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
34f50 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  mined...        
34f60 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
34f70 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34f80 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 61  static IntPtr Ta
34f90 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a  bleFromCursor(..
34fa0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
34fb0 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
34fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34fd0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
34fe0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34ff0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35000 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20      if (pCursor 
35010 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
35020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35030 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
35040 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
35050 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
35060 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 43  al.ReadIntPtr(pC
35070 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
35080 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
35090 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
350a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
350b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
350f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 61 62       #region Tab
35100 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  le Lookup Method
35110 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
35120 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35130 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20    /// Reads and 
35140 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
35150 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35160 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
35170 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
35180 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 62 61  /// structure ba
35190 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76  sed on the nativ
351a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
351b0 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
351c0 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rsor..        //
351d0 2f 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  / derived struct
351e0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
351f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
35200 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
35210 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
35220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
35230 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
35240 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
35250 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
35260 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ved structure.. 
35270 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
35280 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68  which to read th
35290 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
352a0 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
352b0 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
352c0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
352d0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
352e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
352f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
35300 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
35310 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35320 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35330 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
35340 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20  ructure -OR-..  
35350 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35360 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
35370 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f  " /> if it canno
35380 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
35390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
353a0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
353b0 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
353c0 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c 65  ual IntPtr Table
353d0 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20 20 20  FromCursor(..   
353e0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
353f0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
35400 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
35410 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
35420 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f 6d 43  eturn TableFromC
35430 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43 75 72  ursor(this, pCur
35440 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sor);..        }
35450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
35460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
354b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
354c0 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b 73 20        /// Looks 
354d0 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  up and returns t
354e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
354f0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
35500 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
35510 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
35520 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e  e based on the n
35530 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35540 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
35550 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20  b derived..     
35560 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
35570 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35580 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
35590 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
355a0 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
355b0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
355c0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
355d0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
355e0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
355f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
35600 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
35610 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
35620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35630 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35640 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
35650 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
35660 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66 0d 0a 20  ce or null if.. 
35670 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63         /// the c
35680 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65  orresponding one
35690 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64   cannot be found
356a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
356b0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
356c0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
356d0 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75  tual SQLiteVirtu
356e0 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 46 72 6f  alTable TableFro
356f0 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  mIntPtr(..      
35700 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
35710 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
35720 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
35730 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
35740 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
35750 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
35760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35770 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
35780 72 28 70 56 74 61 62 2c 20 22 69 6e 76 61 6c 69  r(pVtab, "invali
35790 64 20 6e 61 74 69 76 65 20 74 61 62 6c 65 22 29  d native table")
357a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
357b0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
357c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
357d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
357e0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
357f0 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20   table;....     
35800 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62 6c         if ((tabl
35810 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a  es != null) &&..
35820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35830 74 61 62 6c 65 73 2e 54 72 79 47 65 74 56 61 6c  tables.TryGetVal
35840 75 65 28 70 56 74 61 62 2c 20 6f 75 74 20 74 61  ue(pVtab, out ta
35850 62 6c 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ble))..         
35860 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35870 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 62        return tab
35880 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
35890 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
358a0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
358b0 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d 65 74  pVtab, HelperMet
358c0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
358d0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
358e0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
358f0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
35900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35910 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c 65 20   "managed table 
35920 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75 6e  for {0} not foun
35930 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a 0d 0a  d", pVtab));....
35940 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35950 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
35960 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
359c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
359d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
359e0 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  ocates and retur
359f0 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  ns a native poin
35a00 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65 33  ter to a sqlite3
35a10 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
35a20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
35a30 74 75 72 65 20 61 6e 64 20 63 72 65 61 74 65 73  ture and creates
35a40 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e 20   an association 
35a50 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64 20 74  between it and t
35a60 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
35a70 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35a80 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
35a90 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
35aa0 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
35ab0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
35ac0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
35ad0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
35ae0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
35af0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
35b00 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
35b10 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
35b20 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
35b30 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  used..        //
35b40 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  / when creating 
35b50 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e 2e  the association.
35b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35b70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
35b80 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
35b90 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
35ba0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35bb0 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
35bc0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
35bd0 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e or..        //
35be0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
35bf0 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20  Ptr.Zero" /> if 
35c00 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73  the method fails
35c10 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e   for any reason.
35c20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35c30 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35c40 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
35c50 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c 65  ual IntPtr Table
35c60 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
35c70 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
35c80 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
35c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
35ca0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35cb0 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62 6c         if ((tabl
35cc0 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 74  e == null) || (t
35cd0 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ables == null)).
35ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35cf0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
35d00 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
35d10 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
35d20 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
35d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
35d40 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73  l success = fals
35d50 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
35d60 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
35d70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35d80 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 41 6c        pVtab = Al
35d90 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b 0d 0a  locateTable();..
35da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35db0 20 20 69 66 20 28 70 56 74 61 62 20 21 3d 20 49    if (pVtab != I
35dc0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
35dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
35de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35df0 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28 70 56      ZeroTable(pV
35e00 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
35e10 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65             table
35e20 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20  .NativeHandle = 
35e30 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20  pVtab;..        
35e40 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
35e50 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20 74 61  es.Add(pVtab, ta
35e60 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ble);..         
35e70 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65             succe
35e80 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ss = true;..    
35e90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
35ea0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35eb0 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
35ec0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
35ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35ee0 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20 26    if (!success &
35ef0 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e 74 50  & (pVtab != IntP
35f00 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20  tr.Zero))..     
35f10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
35f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f30 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74 61    FreeTable(pVta
35f40 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
35f50 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d           pVtab =
35f60 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
35f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
35f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35f90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
35fa0 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a 20 20  eturn pVtab;..  
35fb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
35fc0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
35fd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36020 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
36030 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75 70 20  n Cursor Lookup 
36040 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
36050 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
36060 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b          /// Look
36070 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73  s up and returns
36080 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
36090 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
360a0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a 20 20  leCursor" />..  
360b0 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74        /// object
360c0 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20   instance based 
360d0 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  on the native po
360e0 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20 20  inter to the..  
360f0 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
36100 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
36110 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
36120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36130 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36140 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
36150 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
36160 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
36170 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
36180 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
36190 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
361a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
361b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
361c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
361d0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
361e0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
361f0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
36200 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
36210 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
36220 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
36230 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
36240 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
36250 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36260 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
36270 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
36280 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
36290 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
362a0 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20  or null..       
362b0 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f 72 72   /// if the corr
362c0 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63 61  esponding one ca
362d0 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a  nnot be found...
362e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
362f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
36300 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
36310 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  l SQLiteVirtualT
36320 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72 73 6f  ableCursor Curso
36330 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  rFromIntPtr(..  
36340 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
36350 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
36360 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
36370 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
36380 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
36390 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
363a0 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72  Cursor == IntPtr
363b0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
363c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
363d0 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45         SetTableE
363e0 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76  rror(pVtab, "inv
363f0 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75 72 73  alid native curs
36400 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  or");..         
36410 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
36420 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
36430 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
36440 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
36450 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
36460 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  r;....          
36470 20 20 69 66 20 28 28 63 75 72 73 6f 72 73 20 21    if ((cursors !
36480 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
36490 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73              curs
364a0 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  ors.TryGetValue(
364b0 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63 75 72  pCursor, out cur
364c0 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20  sor))..         
364d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
364e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72        return cur
364f0 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  sor;..          
36500 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
36510 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
36520 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d 65  (pVtab, HelperMe
36530 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
36540 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
36550 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
36560 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
36570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36580 20 20 22 6d 61 6e 61 67 65 64 20 63 75 72 73 6f    "managed curso
36590 72 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f  r for {0} not fo
365a0 75 6e 64 22 2c 20 70 43 75 72 73 6f 72 29 29 3b  und", pCursor));
365b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
365c0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
365d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
365e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
365f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
36630 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
36640 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
36650 20 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72   Allocates and r
36660 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20  eturns a native 
36670 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c  pointer to a sql
36680 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
36690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
366a0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
366b0 61 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20 61  and creates an a
366c0 73 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65  ssociation betwe
366d0 65 6e 20 69 74 20 61 6e 64 20 74 68 65 0d 0a 20  en it and the.. 
366e0 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
366f0 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
36700 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
36710 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
36720 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
36730 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
36740 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
36750 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36760 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
36770 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
36780 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
36790 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
367a0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
367b0 65 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  e to be..       
367c0 20 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e 20 63   /// used when c
367d0 72 65 61 74 69 6e 67 20 74 68 65 20 61 73 73 6f  reating the asso
367e0 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ciation...      
367f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
36800 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
36810 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
36820 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
36830 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74  inter to a sqlit
36840 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
36850 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
36860 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
36870 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
36880 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74  tr.Zero" /> if t
36890 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73 20  he method fails 
368a0 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d  for any reason..
368b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
368c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
368d0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
368e0 61 6c 20 49 6e 74 50 74 72 20 43 75 72 73 6f 72  al IntPtr Cursor
368f0 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
36900 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
36910 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
36920 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cursor..        
36930 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
36940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
36950 20 28 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c   ((cursor == nul
36960 6c 29 20 7c 7c 20 28 63 75 72 73 6f 72 73 20 3d  l) || (cursors =
36970 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
36980 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
36990 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
369a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
369b0 50 74 72 20 70 43 75 72 73 6f 72 20 3d 20 49 6e  Ptr pCursor = In
369c0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
369d0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63          bool suc
369e0 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  cess = false;...
369f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
36a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
36a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36a20 20 70 43 75 72 73 6f 72 20 3d 20 41 6c 6c 6f 63   pCursor = Alloc
36a30 61 74 65 43 75 72 73 6f 72 28 29 3b 0d 0a 0d 0a  ateCursor();....
36a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a50 69 66 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49  if (pCursor != I
36a60 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
36a70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a90 20 20 20 20 63 75 72 73 6f 72 2e 4e 61 74 69 76      cursor.Nativ
36aa0 65 48 61 6e 64 6c 65 20 3d 20 70 43 75 72 73 6f  eHandle = pCurso
36ab0 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
36ac0 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 73 2e          cursors.
36ad0 41 64 64 28 70 43 75 72 73 6f 72 2c 20 63 75 72  Add(pCursor, cur
36ae0 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
36af0 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65             succe
36b00 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ss = true;..    
36b10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36b20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
36b30 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
36b40 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
36b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36b60 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20 26    if (!success &
36b70 26 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49 6e  & (pCursor != In
36b80 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
36b90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36bb0 20 20 20 20 46 72 65 65 43 75 72 73 6f 72 28 70      FreeCursor(p
36bc0 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
36bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
36be0 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  ursor = IntPtr.Z
36bf0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
36c00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36c10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
36c20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 43 75        return pCu
36c30 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rsor;..        }
36c40 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
36c50 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
36c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36cb0 20 20 20 23 72 65 67 69 6f 6e 20 46 75 6e 63 74     #region Funct
36cc0 69 6f 6e 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f  ion Lookup Metho
36cd0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
36ce0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
36cf0 20 20 20 2f 2f 2f 20 44 65 74 65 72 69 6d 69 6e     /// Deterimin
36d00 65 73 20 74 68 65 20 6b 65 79 20 74 68 61 74 20  es the key that 
36d10 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 74  should be used t
36d20 6f 20 69 64 65 6e 74 69 66 79 20 61 6e 64 20 73  o identify and s
36d30 74 6f 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  tore the..      
36d40 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
36d50 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22  "SQLiteFunction"
36d60 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
36d70 6e 63 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  nce for the virt
36d80 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
36d90 20 20 20 2f 2f 2f 20 28 69 2e 65 2e 20 74 6f 20     /// (i.e. to 
36da0 62 65 20 72 65 74 75 72 6e 65 64 20 76 69 61 20  be returned via 
36db0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
36dc0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
36dd0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
36de0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
36df0 3e 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20 20 20  > method)...    
36e00 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
36e10 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36e20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
36e30 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20  umentCount">..  
36e40 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
36e50 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
36e60 73 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c  s to the virtual
36e70 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e   table function.
36e80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36e90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36ea0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36eb0 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
36ec0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
36ed0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
36ee0 6c 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  le function...  
36ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36f00 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36f10 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e  <param name="fun
36f20 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
36f30 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36f40 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69  ef="SQLiteFuncti
36f50 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
36f60 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
36f70 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
36f80 2f 2f 2f 20 74 68 69 73 20 76 69 72 74 75 61 6c  /// this virtual
36f90 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e   table function.
36fa0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36fb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36fc0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
36fd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
36fe0 74 72 69 6e 67 20 74 68 61 74 20 73 68 6f 75 6c  tring that shoul
36ff0 64 20 62 65 20 75 73 65 64 20 74 6f 20 69 64 65  d be used to ide
37000 6e 74 69 66 79 20 61 6e 64 20 73 74 6f 72 65 20  ntify and store 
37010 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
37020 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66       /// table f
37030 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65  unction instance
37040 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  .  This method c
37050 61 6e 6e 6f 74 20 72 65 74 75 72 6e 20 6e 75 6c  annot return nul
37060 6c 2e 20 20 49 66 20 6e 75 6c 6c 0d 0a 20 20 20  l.  If null..   
37070 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75       /// is retu
37080 72 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 20 6d  rned from this m
37090 65 74 68 6f 64 2c 20 74 68 65 20 62 65 68 61 76  ethod, the behav
370a0 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
370b0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
370c0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
370d0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
370e0 74 75 61 6c 20 73 74 72 69 6e 67 20 47 65 74 46  tual string GetF
370f0 75 6e 63 74 69 6f 6e 4b 65 79 28 0d 0a 20 20 20  unctionKey(..   
37100 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
37110 75 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20 20  umentCount,..   
37120 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
37130 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  name,..         
37140 20 20 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f     SQLiteFunctio
37150 6e 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20  n function..    
37160 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
37170 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37180 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72 4d    return HelperM
37190 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
371a0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
371b0 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
371c0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
371d0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
371e0 20 20 20 20 20 22 7b 30 7d 3a 7b 31 7d 22 2c 20       "{0}:{1}", 
371f0 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e  argumentCount, n
37200 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ame);..        }
37210 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
37220 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
37230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37270 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
37280 20 20 20 23 72 65 67 69 6f 6e 20 54 61 62 6c 65     #region Table
37290 20 44 65 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c   Declaration Hel
372a0 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
372b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
372c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
372d0 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 63 6c  Attempts to decl
372e0 61 72 65 20 74 68 65 20 73 63 68 65 6d 61 20 66  are the schema f
372f0 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
37300 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 0d 0a  able using the..
37310 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
37320 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20 63  ified database c
37330 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
37340 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
37350 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37360 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
37370 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20  nection">..     
37380 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
37390 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
373a0 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  ection" /> objec
373b0 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75 73  t instance to us
373c0 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  e when..        
373d0 2f 2f 2f 20 64 65 63 6c 61 72 69 6e 67 20 74 68  /// declaring th
373e0 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68 65 20  e schema of the 
373f0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20  virtual table.  
37400 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  This parameter m
37410 61 79 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  ay not..        
37420 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  /// be null...  
37430 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37440 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37450 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 71 6c  <param name="sql
37460 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37470 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  The string conta
37480 69 6e 69 6e 67 20 74 68 65 20 43 52 45 41 54 45  ining the CREATE
37490 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
374a0 20 74 68 61 74 20 63 6f 6d 70 6c 65 74 65 6c 79   that completely
374b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
374c0 73 63 72 69 62 65 73 20 74 68 65 20 73 63 68 65  scribes the sche
374d0 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  ma for the virtu
374e0 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20  al table.  This 
374f0 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 6e 6f  parameter may no
37500 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  t..        /// b
37510 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  e null...       
37520 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37540 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
37550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
37560 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
37570 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
37580 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
37590 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a  ntain an error..
375a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
375b0 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
375c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
375d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
375e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
375f0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
37600 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
37610 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
37620 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
37630 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
37640 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
37650 20 44 65 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a   DeclareTable(..
37660 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
37670 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
37680 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  nection,..      
37690 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 71 6c        string sql
376a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
376b0 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d  ef string error.
376c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
376d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
376e0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
376f0 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ction == null)..
37700 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
37710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
37720 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20  rror = "invalid 
37730 63 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20  connection";..  
37740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
37750 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
37760 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
37770 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
37780 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
37790 42 61 73 65 20 73 71 6c 69 74 65 42 61 73 65 20  Base sqliteBase 
377a0 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71  = connection._sq
377b0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
377c0 20 20 69 66 20 28 73 71 6c 69 74 65 42 61 73 65    if (sqliteBase
377d0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
377e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
377f0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
37800 3d 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  = "connection ha
37810 73 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65  s invalid handle
37820 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
37830 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
37840 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
37850 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
37860 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37870 69 66 20 28 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29  if (sql == null)
37880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
378a0 20 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69   error = "invali
378b0 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 22  d SQL statement"
378c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
378d0 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
378e0 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
378f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37900 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
37910 65 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73 65  eturn sqliteBase
37920 2e 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 54  .DeclareVirtualT
37930 61 62 6c 65 28 74 68 69 73 2c 20 73 71 6c 2c 20  able(this, sql, 
37940 72 65 66 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ref error);..   
37950 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37960 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37970 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
379c0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
379d0 20 46 75 6e 63 74 69 6f 6e 20 44 65 63 6c 61 72   Function Declar
379e0 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74  ation Helper Met
379f0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
37a00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
37a10 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74       /// Calls t
37a20 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
37a30 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e   core library in
37a40 20 6f 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72   order to declar
37a50 65 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  e a virtual..   
37a60 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66       /// table f
37a70 75 6e 63 74 69 6f 6e 20 69 6e 20 72 65 73 70 6f  unction in respo
37a80 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c 20 69 6e  nse to a call in
37a90 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
37aa0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
37ab0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
37ac0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a  le.xCreate" />..
37ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c          /// or <
37ae0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
37af0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
37b00 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75  onnect" /> virtu
37b10 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
37b20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 73 2e 0d 0a    /// methods...
37b30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
37b40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
37b50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37b60 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
37b70 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
37b80 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
37b90 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f  Connection" /> o
37ba0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
37bb0 6f 20 75 73 65 20 77 68 65 6e 0d 0a 20 20 20 20  o use when..    
37bc0 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 69 6e      /// declarin
37bd0 67 20 74 68 65 20 73 63 68 65 6d 61 20 6f 66 20  g the schema of 
37be0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
37bf0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
37c00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
37c10 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
37c20 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  e="argumentCount
37c30 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37c40 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
37c50 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66  guments to the f
37c60 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 64 65  unction being de
37c70 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20 20 20  clared...       
37c80 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37c90 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37ca0 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
37cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
37cc0 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63  name of the func
37cd0 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61  tion being decla
37ce0 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  red...        //
37cf0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
37d00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37d10 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
37d20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
37d30 75 63 63 65 73 73 2c 20 74 68 65 20 63 6f 6e 74  uccess, the cont
37d40 65 6e 74 73 20 6f 66 20 74 68 69 73 20 70 61 72  ents of this par
37d50 61 6d 65 74 65 72 20 61 72 65 20 75 6e 64 65 66  ameter are undef
37d60 69 6e 65 64 2e 20 20 55 70 6f 6e 0d 0a 2