System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 31daba7c47d96b080c0c0d3b1ef94c6ee874a99d:


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 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1f0c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f0d0 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72     return IntPtr
1f0e0 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
1f0f0 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
1f100 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b   = value.Length;
1f110 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f120 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29  if (length == 0)
1f130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f140 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
1f150 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
1f160 20 20 20 20 20 49 6e 74 50 74 72 20 72 65 73 75       IntPtr resu
1f170 6c 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lt = SQLiteMemor
1f180 79 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74  y.Allocate(lengt
1f190 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h);....         
1f1a0 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d     if (result ==
1f1b0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
1f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1f1d0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
1f1e0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
1f1f0 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 76    Marshal.Copy(v
1f200 61 6c 75 65 2c 20 30 2c 20 72 65 73 75 6c 74 2c  alue, 0, result,
1f210 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20 20   length);....   
1f220 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f230 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20  result;..       
1f240 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
1f250 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
1f260 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1f270 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2c0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1f2d0 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 20 53 74  SQLiteMarshal St
1f2e0 61 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20  atic Class..    
1f2f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1f300 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
1f310 73 20 63 6f 6e 74 61 69 6e 73 20 73 74 61 74 69  s contains stati
1f320 63 20 6d 65 74 68 6f 64 73 20 74 68 61 74 20 61  c methods that a
1f330 72 65 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f  re used to perfo
1f340 72 6d 20 73 65 76 65 72 61 6c 0d 0a 20 20 20 20  rm several..    
1f350 2f 2f 2f 20 6c 6f 77 2d 6c 65 76 65 6c 20 64 61  /// low-level da
1f360 74 61 20 6d 61 72 73 68 61 6c 6c 69 6e 67 20 74  ta marshalling t
1f370 61 73 6b 73 20 62 65 74 77 65 65 6e 20 6e 61 74  asks between nat
1f380 69 76 65 20 61 6e 64 20 6d 61 6e 61 67 65 64 20  ive and managed 
1f390 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  code...    /// <
1f3a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
1f3b0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1f3c0 6c 61 73 73 20 53 51 4c 69 74 65 4d 61 72 73 68  lass SQLiteMarsh
1f3d0 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  al..    {..     
1f3e0 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 50 74     #region IntPt
1f3f0 72 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73  r Helper Methods
1f400 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f410 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f420 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 6e   /// Returns a n
1f430 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  ew <see cref="In
1f440 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
1f450 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20 6f  instance based o
1f460 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
1f470 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  // specified <se
1f480 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
1f490 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1f4a0 63 65 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65  ce and an intege
1f4b0 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  r..        /// o
1f4c0 66 66 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20  ffset...        
1f4d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1f4e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1f4f0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
1f500 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1f510 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
1f520 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
1f530 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
1f540 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
1f550 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
1f560 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
1f570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1f580 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1f590 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
1f5a0 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
1f5b0 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
1f5c0 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
1f5d0 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
1f5e0 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20 6e 65  tion that the ne
1f5f0 77 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  w..        /// <
1f600 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72  see cref="IntPtr
1f610 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1f620 61 6e 63 65 20 73 68 6f 75 6c 64 20 70 6f 69 6e  ance should poin
1f630 74 20 74 6f 2e 0d 0a 20 20 20 20 20 20 20 20 2f  t to...        /
1f640 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f650 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1f660 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1f670 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65  The new <see cre
1f680 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20 6f 62  f="IntPtr" /> ob
1f690 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
1f6a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1f6b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1f6c0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
1f6d0 74 50 74 72 20 49 6e 74 50 74 72 46 6f 72 4f 66  tPtr IntPtrForOf
1f6e0 66 73 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  fset(..         
1f6f0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
1f700 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
1f710 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
1f720 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1f730 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f740 20 20 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74    return new Int
1f750 50 74 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e  Ptr(pointer.ToIn
1f760 74 36 34 28 29 20 2b 20 6f 66 66 73 65 74 29 3b  t64() + offset);
1f770 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1f780 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1f7d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1f7e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1f7f0 20 2f 2f 2f 20 52 6f 75 6e 64 73 20 75 70 20 61   /// Rounds up a
1f800 6e 20 69 6e 74 65 67 65 72 20 73 69 7a 65 20 74  n integer size t
1f810 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69  o the next multi
1f820 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69 67 6e  ple of the align
1f830 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
1f840 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1f850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f860 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a  m name="size">..
1f870 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1f880 73 69 7a 65 2c 20 69 6e 20 62 79 74 65 73 2c 20  size, in bytes, 
1f890 74 6f 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70  to be rounded up
1f8a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1f8b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1f8c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f8d0 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 0d 0a 20  ="alignment">.. 
1f8e0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 72         /// The r
1f8f0 65 71 75 69 72 65 64 20 61 6c 69 67 6e 6d 65 6e  equired alignmen
1f900 74 20 66 6f 72 20 74 68 65 20 72 65 74 75 72 6e  t for the return
1f910 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
1f920 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f930 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
1f940 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
1f950 2f 20 54 68 65 20 73 69 7a 65 2c 20 69 6e 20 62  / The size, in b
1f960 79 74 65 73 2c 20 72 6f 75 6e 64 65 64 20 75 70  ytes, rounded up
1f970 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c   to the next mul
1f980 74 69 70 6c 65 20 6f 66 20 74 68 65 0d 0a 20 20  tiple of the..  
1f990 20 20 20 20 20 20 2f 2f 2f 20 61 6c 69 67 6e 6d        /// alignm
1f9a0 65 6e 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ent.  This value
1f9b0 20 6d 61 79 20 65 6e 64 20 75 70 20 62 65 69 6e   may end up bein
1f9c0 67 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  g the same as th
1f9d0 65 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20 20  e original..    
1f9e0 20 20 20 20 2f 2f 2f 20 73 69 7a 65 2e 0d 0a 20      /// size... 
1f9f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1fa00 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
1fa10 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
1fa20 20 52 6f 75 6e 64 55 70 28 0d 0a 20 20 20 20 20   RoundUp(..     
1fa30 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a 65 2c         int size,
1fa40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
1fa50 74 20 61 6c 69 67 6e 6d 65 6e 74 0d 0a 20 20 20  t alignment..   
1fa60 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1fa70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1fa80 20 20 20 69 6e 74 20 61 6c 69 67 6e 6d 65 6e 74     int alignment
1fa90 4d 69 6e 75 73 4f 6e 65 20 3d 20 61 6c 69 67 6e  MinusOne = align
1faa0 6d 65 6e 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20  ment - 1;..     
1fab0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
1fac0 73 69 7a 65 20 2b 20 61 6c 69 67 6e 6d 65 6e 74  size + alignment
1fad0 4d 69 6e 75 73 4f 6e 65 29 20 26 20 7e 61 6c 69  MinusOne) & ~ali
1fae0 67 6e 6d 65 6e 74 4d 69 6e 75 73 4f 6e 65 29 3b  gnmentMinusOne);
1faf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1fb00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1fb50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1fb60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1fb70 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
1fb80 74 68 65 20 6f 66 66 73 65 74 2c 20 69 6e 20 62  the offset, in b
1fb90 79 74 65 73 2c 20 6f 66 20 74 68 65 20 6e 65 78  ytes, of the nex
1fba0 74 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62  t structure memb
1fbb0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  er...        ///
1fbc0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1fbd0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1fbe0 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
1fbf0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1fc00 6f 66 66 73 65 74 2c 20 69 6e 20 62 79 74 65 73  offset, in bytes
1fc10 2c 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  , of the current
1fc20 20 73 74 72 75 63 74 75 72 65 20 6d 65 6d 62 65   structure membe
1fc30 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
1fc40 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1fc50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1fc60 65 3d 22 73 69 7a 65 22 3e 0d 0a 20 20 20 20 20  e="size">..     
1fc70 20 20 20 2f 2f 2f 20 54 68 65 20 73 69 7a 65 2c     /// The size,
1fc80 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74 68   in bytes, of th
1fc90 65 20 63 75 72 72 65 6e 74 20 73 74 72 75 63 74  e current struct
1fca0 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
1fcb0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1fcc0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1fcd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 69 67  param name="alig
1fce0 6e 6d 65 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  nment">..       
1fcf0 20 2f 2f 2f 20 54 68 65 20 61 6c 69 67 6e 6d 65   /// The alignme
1fd00 6e 74 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66  nt, in bytes, of
1fd10 20 74 68 65 20 6e 65 78 74 20 73 74 72 75 63 74   the next struct
1fd20 75 72 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20  ure member...   
1fd30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1fd40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1fd50 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1fd60 20 20 2f 2f 2f 20 54 68 65 20 6f 66 66 73 65 74    /// The offset
1fd70 2c 20 69 6e 20 62 79 74 65 73 2c 20 6f 66 20 74  , in bytes, of t
1fd80 68 65 20 6e 65 78 74 20 73 74 72 75 63 74 75 72  he next structur
1fd90 65 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20  e member...     
1fda0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1fdb0 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
1fdc0 63 20 73 74 61 74 69 63 20 69 6e 74 20 4e 65 78  c static int Nex
1fdd0 74 4f 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20  tOffsetOf(..    
1fde0 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73          int offs
1fdf0 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et,..           
1fe00 20 69 6e 74 20 73 69 7a 65 2c 0d 0a 20 20 20 20   int size,..    
1fe10 20 20 20 20 20 20 20 20 69 6e 74 20 61 6c 69 67          int alig
1fe20 6e 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  nment..         
1fe30 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1fe40 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1fe50 75 72 6e 20 52 6f 75 6e 64 55 70 28 6f 66 66 73  urn RoundUp(offs
1fe60 65 74 20 2b 20 73 69 7a 65 2c 20 61 6c 69 67 6e  et + size, align
1fe70 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  ment);..        
1fe80 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1fe90 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1fea0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1feb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fee0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1fef0 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73      #region Mars
1ff00 68 61 6c 20 52 65 61 64 20 48 65 6c 70 65 72 20  hal Read Helper 
1ff10 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
1ff20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1ff30 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64          /// Read
1ff40 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49  s a <see cref="I
1ff50 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 66  nt32" /> value f
1ff60 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
1ff70 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
1ff80 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
1ff90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1ffa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1ffb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ffc0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
1ffd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1ffe0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
1fff0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
20000 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
20010 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
20020 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
20030 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20040 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20050 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20060 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
20070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20080 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
20090 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
200a0 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
200b0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
200c0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
200d0 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
200e0 74 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f  to be read is lo
200f0 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  cated...        
20100 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20110 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
20120 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
20130 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
20140 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
20150 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
20160 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
20170 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20180 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20190 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
201a0 20 69 6e 74 20 52 65 61 64 49 6e 74 33 32 28 0d   int ReadInt32(.
201b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
201c0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
201d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
201e0 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
201f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
20200 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20210 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20220 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20230 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49  rn Marshal.ReadI
20240 6e 74 33 32 28 70 6f 69 6e 74 65 72 2c 20 6f 66  nt32(pointer, of
20250 66 73 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20  fset);..#else.. 
20260 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20270 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  n Marshal.ReadIn
20280 74 33 32 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t32(IntPtrForOff
20290 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
202a0 73 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  set));..#endif..
202b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
202c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
202d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
202f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
20310 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
20320 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
20330 2f 2f 20 52 65 61 64 73 20 61 20 3c 73 65 65 20  // Reads a <see 
20340 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
20350 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 73  value from the s
20360 70 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d  pecified memory.
20370 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63  .        /// loc
20380 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20390 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
203a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
203b0 61 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72  am name="pointer
203c0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
203d0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
203e0 6e 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ntPtr" /> object
203f0 20 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73   instance repres
20400 65 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d  enting the base.
20410 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d  .        /// mem
20420 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
20430 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20440 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20450 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66   <param name="of
20460 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20  fset">..        
20470 2f 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20  /// The integer 
20480 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20  offset from the 
20490 62 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61  base memory loca
204a0 74 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a  tion where the..
204b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
204c0 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
204d0 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 61   value to be rea
204e0 64 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d 0a 20  d is located... 
204f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
20500 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
20510 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
20520 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
20530 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
20540 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 73 70   value at the sp
20550 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 20 6c  ecified memory l
20560 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ocation...      
20570 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
20580 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
20590 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 52 65 61   static long Rea
205a0 64 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  dInt64(..       
205b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
205c0 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
205d0 20 20 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20    int offset..  
205e0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
205f0 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41       {..#if !PLA
20600 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
20610 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
20620 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
20630 61 6c 2e 52 65 61 64 49 6e 74 36 34 28 70 6f 69  al.ReadInt64(poi
20640 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  nter, offset);..
20650 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
20660 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61     return Marsha
20670 6c 2e 52 65 61 64 49 6e 74 36 34 28 49 6e 74 50  l.ReadInt64(IntP
20680 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
20690 74 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a  ter, offset));..
206a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
206b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
206c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
206f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20700 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20710 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20720 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73         /// Reads
20730 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f   a <see cref="Do
20740 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 66  uble" /> value f
20750 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66 69 65  rom the specifie
20760 64 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20  d memory..      
20770 20 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d    /// location..
20780 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
20790 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
207a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
207b0 3d 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20  ="pointer">..   
207c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
207d0 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
207e0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
207f0 63 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ce representing 
20800 74 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20  the base..      
20810 20 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63    /// memory loc
20820 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
20830 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
20840 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
20850 20 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d   name="offset">.
20860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
20870 20 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20   integer offset 
20880 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65  from the base me
20890 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68  mory location wh
208a0 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ere the..       
208b0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
208c0 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 62 65  Double" /> to be
208d0 20 72 65 61 64 20 69 73 20 6c 6f 63 61 74 65 64   read is located
208e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
208f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
20900 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
20910 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
20920 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
20930 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 74 20 74  e" /> value at t
20940 68 65 20 73 70 65 63 69 66 69 65 64 20 6d 65 6d  he specified mem
20950 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  ory location... 
20960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
20970 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
20980 75 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75  ublic static dou
20990 62 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d  ble ReadDouble(.
209a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
209b0 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20  Ptr pointer,..  
209c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66            int of
209d0 66 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20  fset..          
209e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
209f0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
20a00 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
20a10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20a20 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
20a30 49 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c  Int64BitsToDoubl
20a40 65 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e  e(Marshal.ReadIn
20a50 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
20a60 20 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f        pointer, o
20a70 66 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d  ffset));..#else.
20a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
20a90 75 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72  urn BitConverter
20aa0 2e 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e  .ToDouble(BitCon
20ab0 76 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28  verter.GetBytes(
20ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20ad0 20 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e    Marshal.ReadIn
20ae0 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
20af0 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
20b00 73 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e  set))), 0);..#en
20b10 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
20b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
20b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
20b80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
20b90 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e      /// Reads an
20ba0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
20bb0 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 66 72 6f  tr" /> value fro
20bc0 6d 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  m the specified 
20bd0 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
20be0 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
20bf0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
20c00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
20c10 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
20c20 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
20c30 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
20c40 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
20c50 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
20c60 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
20c70 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
20c80 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
20c90 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
20ca0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
20cb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20cc0 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
20cd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
20ce0 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
20cf0 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
20d00 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
20d10 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
20d20 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
20d30 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74  tPtr" /> value t
20d40 6f 20 62 65 20 72 65 61 64 20 69 73 20 6c 6f 63  o be read is loc
20d50 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ated...        /
20d60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
20d70 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
20d80 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
20d90 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
20da0 6e 74 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20  ntPtr" /> value 
20db0 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64  at the specified
20dc0 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e   memory location
20dd0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
20de0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
20df0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
20e00 20 49 6e 74 50 74 72 20 52 65 61 64 49 6e 74 50   IntPtr ReadIntP
20e10 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
20e20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
20e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
20e40 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
20e50 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
20e60 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
20e70 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
20e80 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
20e90 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52  return Marshal.R
20ea0 65 61 64 49 6e 74 50 74 72 28 70 6f 69 6e 74 65  eadIntPtr(pointe
20eb0 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65 6c  r, offset);..#el
20ec0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
20ed0 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52  return Marshal.R
20ee0 65 61 64 49 6e 74 50 74 72 28 49 6e 74 50 74 72  eadIntPtr(IntPtr
20ef0 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
20f00 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65  r, offset));..#e
20f10 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
20f20 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
20f30 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
20f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20f90 20 20 23 72 65 67 69 6f 6e 20 4d 61 72 73 68 61    #region Marsha
20fa0 6c 20 57 72 69 74 65 20 48 65 6c 70 65 72 20 4d  l Write Helper M
20fb0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
20fc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
20fd0 20 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65         /// Write
20fe0 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
20ff0 49 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20  Int32" /> value 
21000 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
21010 20 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20   memory..       
21020 20 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a   /// location...
21030 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
21040 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
21050 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
21060 22 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20  "pointer">..    
21070 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
21080 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f   cref="IntPtr" /
21090 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
210a0 65 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  e representing t
210b0 68 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20  he base..       
210c0 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61   /// memory loca
210d0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
210e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
210f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
21100 6e 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a  name="offset">..
21110 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
21120 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66  integer offset f
21130 72 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d  rom the base mem
21140 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65  ory location whe
21150 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  re the..        
21160 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
21170 6e 74 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74  nt32" /> value t
21180 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20  o be written is 
21190 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
211a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
211b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
211c0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
211d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
211e0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  e <see cref="Int
211f0 33 32 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  32" /> value to 
21200 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
21210 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21220 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21230 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e  tic void WriteIn
21240 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t32(..          
21250 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72    IntPtr pointer
21260 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
21270 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20 20  nt offset,..    
21280 20 20 20 20 20 20 20 20 69 6e 74 20 76 61 6c 75          int valu
21290 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
212a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
212b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
212c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
212d0 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
212e0 2e 57 72 69 74 65 49 6e 74 33 32 28 70 6f 69 6e  .WriteInt32(poin
212f0 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c  ter, offset, val
21300 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
21310 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
21320 2e 57 72 69 74 65 49 6e 74 33 32 28 49 6e 74 50  .WriteInt32(IntP
21330 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e  trForOffset(poin
21340 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76 61  ter, offset), va
21350 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lue);..#endif.. 
21360 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21370 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
21380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
213b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
213c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
213d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
213e0 2f 20 57 72 69 74 65 73 20 61 6e 20 3c 73 65 65  / Writes an <see
213f0 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
21400 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 73 70   value to the sp
21410 65 63 69 66 69 65 64 20 6d 65 6d 6f 72 79 0d 0a  ecified memory..
21420 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 63 61          /// loca
21430 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
21440 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
21450 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21460 6d 20 6e 61 6d 65 3d 22 70 6f 69 6e 74 65 72 22  m name="pointer"
21470 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
21480 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  he <see cref="In
21490 74 50 74 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tPtr" /> object 
214a0 69 6e 73 74 61 6e 63 65 20 72 65 70 72 65 73 65  instance represe
214b0 6e 74 69 6e 67 20 74 68 65 20 62 61 73 65 0d 0a  nting the base..
214c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f          /// memo
214d0 72 79 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  ry location...  
214e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
214f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
21500 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 66 66  <param name="off
21510 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  set">..        /
21520 2f 2f 20 54 68 65 20 69 6e 74 65 67 65 72 20 6f  // The integer o
21530 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62  ffset from the b
21540 61 73 65 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  ase memory locat
21550 69 6f 6e 20 77 68 65 72 65 20 74 68 65 0d 0a 20  ion where the.. 
21560 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
21570 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
21580 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74  value to be writ
21590 74 65 6e 20 69 73 20 6c 6f 63 61 74 65 64 2e 0d  ten is located..
215a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
215b0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
215c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
215d0 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
215e0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
215f0 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
21600 6c 75 65 20 74 6f 20 77 72 69 74 65 2e 0d 0a 20  lue to write... 
21610 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
21620 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
21630 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
21640 57 72 69 74 65 49 6e 74 36 34 28 0d 0a 20 20 20  WriteInt64(..   
21650 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
21660 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20  pointer,..      
21670 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74        int offset
21680 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  ,..            l
21690 6f 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ong value..     
216a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
216b0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
216c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
216d0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
216e0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
216f0 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t64(pointer, off
21700 73 65 74 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65  set, value);..#e
21710 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
21720 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
21730 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66  t64(IntPtrForOff
21740 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  set(pointer, off
21750 73 65 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23  set), value);..#
21760 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d  endif..        }
21770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
21780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
217c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
217d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
217e0 20 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73        /// Writes
217f0 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f   a <see cref="Do
21800 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74  uble" /> value t
21810 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
21820 6d 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  memory..        
21830 2f 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20  /// location... 
21840 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
21850 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
21860 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
21870 70 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20  pointer">..     
21880 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
21890 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
218a0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
218b0 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68   representing th
218c0 65 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20  e base..        
218d0 2f 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74  /// memory locat
218e0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
218f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
21900 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21910 61 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20  ame="offset">.. 
21920 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
21930 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72  nteger offset fr
21940 6f 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f  om the base memo
21950 72 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72  ry location wher
21960 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  e the..        /
21970 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  // <see cref="Do
21980 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74  uble" /> value t
21990 6f 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20  o be written is 
219a0 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20  located...      
219b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
219c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
219d0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
219e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
219f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  e <see cref="Dou
21a00 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
21a10 20 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20   write...       
21a20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21a30 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
21a40 61 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 44  atic void WriteD
21a50 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  ouble(..        
21a60 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74      IntPtr point
21a70 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
21a80 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20   int offset,..  
21a90 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65            double
21aa0 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
21ab0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
21ac0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
21ad0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
21ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
21af0 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36 34  rshal.WriteInt64
21b00 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
21b10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
21b20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e     BitConverter.
21b30 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34 42 69 74  DoubleToInt64Bit
21b40 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23 65 6c 73  s(value));..#els
21b50 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  e..            M
21b60 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 36  arshal.WriteInt6
21b70 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  4(IntPtrForOffse
21b80 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  t(pointer, offse
21b90 74 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t),..           
21ba0 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74 65       BitConverte
21bb0 72 2e 54 6f 49 6e 74 36 34 28 42 69 74 43 6f 6e  r.ToInt64(BitCon
21bc0 76 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28  verter.GetBytes(
21bd0 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d 0a 23 65  value), 0));..#e
21be0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
21bf0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
21c50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
21c60 20 20 20 20 20 2f 2f 2f 20 57 72 69 74 65 73 20       /// Writes 
21c70 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  a <see cref="Int
21c80 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  Ptr" /> value to
21c90 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6d   the specified m
21ca0 65 6d 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 2f  emory..        /
21cb0 2f 2f 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 20  // location...  
21cc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
21cd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
21ce0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
21cf0 6f 69 6e 74 65 72 22 3e 0d 0a 20 20 20 20 20 20  ointer">..      
21d00 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
21d10 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 20  ref="IntPtr" /> 
21d20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
21d30 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65  representing the
21d40 20 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f   base..        /
21d50 2f 2f 20 6d 65 6d 6f 72 79 20 6c 6f 63 61 74 69  // memory locati
21d60 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
21d70 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
21d80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
21d90 6d 65 3d 22 6f 66 66 73 65 74 22 3e 0d 0a 20 20  me="offset">..  
21da0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
21db0 74 65 67 65 72 20 6f 66 66 73 65 74 20 66 72 6f  teger offset fro
21dc0 6d 20 74 68 65 20 62 61 73 65 20 6d 65 6d 6f 72  m the base memor
21dd0 79 20 6c 6f 63 61 74 69 6f 6e 20 77 68 65 72 65  y location where
21de0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
21df0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
21e00 50 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  Ptr" /> value to
21e10 20 62 65 20 77 72 69 74 74 65 6e 20 69 73 20 6c   be written is l
21e20 6f 63 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  ocated...       
21e30 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
21e40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
21e50 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
21e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
21e70 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
21e80 74 72 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  tr" /> value to 
21e90 77 72 69 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  write...        
21ea0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
21eb0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21ec0 74 69 63 20 76 6f 69 64 20 57 72 69 74 65 49 6e  tic void WriteIn
21ed0 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
21ee0 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
21ef0 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
21f00 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20 20 20  int offset,..   
21f10 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
21f20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
21f30 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
21f40 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
21f50 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
21f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .            Mar
21f70 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72  shal.WriteIntPtr
21f80 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74  (pointer, offset
21f90 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65  , value);..#else
21fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
21fb0 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
21fc0 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73 65  r(IntPtrForOffse
21fd0 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65  t(pointer, offse
21fe0 74 29 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e  t), value);..#en
21ff0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
22000 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
22010 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
22020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22060 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
22070 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63 74 20   #region Object 
22080 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
22090 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
220a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
220b0 2f 2f 20 47 65 6e 65 72 61 74 65 73 20 61 20 68  // Generates a h
220c0 61 73 68 20 63 6f 64 65 20 76 61 6c 75 65 20 66  ash code value f
220d0 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 2e 0d 0a  or the object...
220e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
220f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
22100 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
22110 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20  "value">..      
22120 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74    /// The object
22130 20 69 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74   instance used t
22140 6f 20 63 61 6c 63 75 6c 61 74 65 20 74 68 65 20  o calculate the 
22150 68 61 73 68 20 63 6f 64 65 2e 0d 0a 20 20 20 20  hash code...    
22160 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
22180 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 65 6e 74  aram name="ident
22190 69 74 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ity">..        /
221a0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 64  // Non-zero if d
221b0 69 66 66 65 72 65 6e 74 20 6f 62 6a 65 63 74 20  ifferent object 
221c0 69 6e 73 74 61 6e 63 65 73 20 77 69 74 68 20 74  instances with t
221d0 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 73 68  he same value sh
221e0 6f 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ould..        //
221f0 2f 20 67 65 6e 65 72 61 74 65 20 64 69 66 66 65  / generate diffe
22200 72 65 6e 74 20 68 61 73 68 20 63 6f 64 65 73 2c  rent hash codes,
22210 20 77 68 65 72 65 20 61 70 70 6c 69 63 61 62 6c   where applicabl
22220 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  e.  This paramet
22230 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  er..        /// 
22240 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e  has no effect on
22250 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
22260 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
22270 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
22280 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
22290 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
222a0 20 20 20 2f 2f 2f 20 54 68 65 20 68 61 73 68 20     /// The hash 
222b0 63 6f 64 65 20 76 61 6c 75 65 20 2d 4f 52 2d 20  code value -OR- 
222c0 7a 65 72 6f 20 69 66 20 74 68 65 20 6f 62 6a 65  zero if the obje
222d0 63 74 20 69 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20  ct is null...   
222e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
222f0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
22300 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 47  lic static int G
22310 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20  etHashCode(..   
22320 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
22330 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  value,..        
22340 20 20 20 20 62 6f 6f 6c 20 69 64 65 6e 74 69 74      bool identit
22350 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
22360 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
22370 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
22380 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
22390 20 20 20 20 20 20 20 20 20 69 66 20 28 69 64 65           if (ide
223a0 6e 74 69 74 79 29 0d 0a 20 20 20 20 20 20 20 20  ntity)..        
223b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52          return R
223c0 75 6e 74 69 6d 65 48 65 6c 70 65 72 73 2e 47 65  untimeHelpers.Ge
223d0 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29  tHashCode(value)
223e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
223f0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
22400 75 65 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74 75  ue == null) retu
22410 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20  rn 0;..         
22420 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
22430 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a  GetHashCode();..
22440 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22450 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
22460 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
22470 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
22480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
224c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
224d0 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 4d 6f 64  region SQLiteMod
224e0 75 6c 65 20 42 61 73 65 20 43 6c 61 73 73 0d 0a  ule Base Class..
224f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
22500 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
22510 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
22520 20 61 20 6d 61 6e 61 67 65 64 20 76 69 72 74 75   a managed virtu
22530 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
22540 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d  implementation..
22550 0a 20 20 20 20 2f 2f 2f 20 49 74 20 69 73 20 6e  .    /// It is n
22560 6f 74 20 73 65 61 6c 65 64 20 61 6e 64 20 6d 75  ot sealed and mu
22570 73 74 20 62 65 20 75 73 65 64 20 61 73 20 74 68  st be used as th
22580 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72  e base class for
22590 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73   any..    /// us
225a0 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72 74 75  er-defined virtu
225b0 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
225c0 63 6c 61 73 73 65 73 20 69 6d 70 6c 65 6d 65 6e  classes implemen
225d0 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63  ted in managed c
225e0 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
225f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
22600 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 63 6c  blic abstract cl
22610 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ass SQLiteModule
22620 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
22630 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
22640 64 75 6c 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e  dule, /*ISQLiteN
22650 61 74 69 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a  ativeModule,*/..
22660 20 20 20 20 20 20 20 20 20 20 20 20 49 44 69 73              IDis
22670 70 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53  posable /* NOT S
22680 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d  EALED */..    {.
22690 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
226a0 20 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64   SQLiteNativeMod
226b0 75 6c 65 20 50 72 69 76 61 74 65 20 43 6c 61 73  ule Private Clas
226c0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
226d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
226e0 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
226f0 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20   implements the 
22700 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
22710 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20  teNativeModule" 
22720 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  />..        /// 
22730 69 6e 74 65 72 66 61 63 65 20 62 79 20 66 6f 72  interface by for
22740 77 61 72 64 69 6e 67 20 74 68 6f 73 65 20 6d 65  warding those me
22750 74 68 6f 64 20 63 61 6c 6c 73 20 74 6f 20 74 68  thod calls to th
22760 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
22770 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
22780 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
22790 74 20 69 6e 73 74 61 6e 63 65 20 69 74 20 63 6f  t instance it co
227a0 6e 74 61 69 6e 73 2e 20 20 49 66 20 74 68 65 0d  ntains.  If the.
227b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
227c0 74 61 69 6e 65 64 20 3c 73 65 65 20 63 72 65 66  tained <see cref
227d0 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20  ="SQLiteModule" 
227e0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
227f0 63 65 20 69 73 20 6e 75 6c 6c 2c 20 61 6c 6c 0d  ce is null, all.
22800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
22810 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
22820 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22  iteNativeModule"
22830 20 2f 3e 20 6d 65 74 68 6f 64 73 20 73 69 6d 70   /> methods simp
22840 6c 79 20 67 65 6e 65 72 61 74 65 20 61 6e 0d 0a  ly generate an..
22850 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 72 72 6f          /// erro
22860 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
22870 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
22880 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
22890 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4e  ed class SQLiteN
228a0 61 74 69 76 65 4d 6f 64 75 6c 65 20 3a 0d 0a 20  ativeModule :.. 
228b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
228c0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
228d0 6c 65 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  le, IDisposable.
228e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
228f0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
22900 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
22910 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
22920 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22930 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
22940 69 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  is is the value 
22950 74 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75  that is always u
22960 73 65 64 20 66 6f 72 20 74 68 65 20 22 6c 6f 67  sed for the "log
22970 45 72 72 6f 72 73 22 0d 0a 20 20 20 20 20 20 20  Errors"..       
22980 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74       /// paramet
22990 65 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75  er to the variou
229a0 73 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68  s static error h
229b0 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20  andling methods 
229c0 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20  provided..      
229d0 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65        /// by the
229e0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
229f0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61  teModule" /> cla
22a00 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
22a10 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
22a30 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20  vate const bool 
22a40 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f 72 73  DefaultLogErrors
22a50 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20   = true;....    
22a60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
22a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
22ab0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
22ac0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
22ad0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
22ae0 73 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74  s the value that
22af0 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20   is always used 
22b00 66 6f 72 20 74 68 65 20 22 6c 6f 67 45 78 63 65  for the "logExce
22b10 70 74 69 6f 6e 73 22 0d 0a 20 20 20 20 20 20 20  ptions"..       
22b20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74       /// paramet
22b30 65 72 20 74 6f 20 74 68 65 20 76 61 72 69 6f 75  er to the variou
22b40 73 20 73 74 61 74 69 63 20 65 72 72 6f 72 20 68  s static error h
22b50 61 6e 64 6c 69 6e 67 20 6d 65 74 68 6f 64 73 20  andling methods 
22b60 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20  provided..      
22b70 20 20 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65        /// by the
22b80 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
22b90 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61  teModule" /> cla
22ba0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
22bb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
22bd0 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20  vate const bool 
22be0 44 65 66 61 75 6c 74 4c 6f 67 45 78 63 65 70 74  DefaultLogExcept
22bf0 69 6f 6e 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a  ions = true;....
22c00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
22c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
22c50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
22c60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22c70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
22c80 69 73 20 69 73 20 74 68 65 20 65 72 72 6f 72 20  is is the error 
22c90 6d 65 73 73 61 67 65 20 74 65 78 74 20 75 73 65  message text use
22ca0 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61  d when the conta
22cb0 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  ined..          
22cc0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
22cd0 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
22ce0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
22cf0 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  e is not availab
22d00 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
22d10 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73  /// for any reas
22d20 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
22d30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
22d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
22d50 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
22d60 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  g ModuleNotAvail
22d70 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
22d80 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
22d90 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75      "native modu
22da0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
22db0 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22  n not available"
22dc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ;..            #
22dd0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
22de0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
22df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
22e30 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
22e40 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
22e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
22e60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22e70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
22e80 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
22e90 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
22ea0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
22eb0 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20  d to provide..  
22ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e            /// an
22ed0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
22ee0 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  of the <see cref
22ef0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
22f00 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
22f10 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72         /// inter
22f20 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  face...         
22f30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
22f40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
22f50 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64  rivate SQLiteMod
22f60 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20  ule module;..   
22f70 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
22f80 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
22f90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
22fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22fd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
22fe0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
22ff0 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
23000 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
23010 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
23020 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f            /// Co
23030 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
23040 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
23050 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
23060 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
23070 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23080 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
23090 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
230a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
230b0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
230c0 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
230d0 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20  nstance used to 
230e0 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20  provide..       
230f0 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c       /// an impl
23100 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  ementation of th
23110 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23120 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23130 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  " />..          
23140 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e    /// interface.
23150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23160 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23170 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
23180 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
23190 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
231a0 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65      SQLiteModule
231b0 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20   module..       
231c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
231d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
231e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
231f0 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b  module = module;
23200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23210 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
23220 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
23230 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
23280 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
23290 6e 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63  n Private Static
232a0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
232b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
232c0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
232d0 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
232e0 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
232f0 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
23300 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
23310 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
23320 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
23330 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
23340 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
23350 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
23360 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
23370 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23380 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
23390 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
233a0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
233b0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
233c0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
233d0 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
233e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
233f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
23400 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
23410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
23420 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65  he value of <see
23430 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72   cref="SQLiteErr
23440 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e  orCode.Error" />
23450 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23460 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
23470 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
23480 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  te static SQLite
23490 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65  ErrorCode Module
234a0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
234b0 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
234c0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
234d0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
234e0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
234f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23500 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
23510 65 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74  eError(null, pVt
23520 61 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  ab, DefaultLogEr
23530 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  rors,..         
23540 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75             Defau
23550 6c 74 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c  ltLogExceptions,
23560 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
23570 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
23580 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23590 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
235a0 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
235b0 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
235c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
235d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
235e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
235f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23610 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
23620 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
23630 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23640 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61 62 6c  // Sets the tabl
23650 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  e error message 
23660 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e 64 69  to one that indi
23670 63 61 74 65 73 20 74 68 65 20 6e 61 74 69 76 65  cates the native
23680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23690 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  / module impleme
236a0 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61  ntation is not a
236b0 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
236c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
236d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
236e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
236f0 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
23700 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
23710 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
23720 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
23730 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72  _vtab_cursor der
23740 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  ived..          
23750 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 2e    /// structure.
23760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23770 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
23790 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
237a0 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
237b0 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
237c0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
237d0 72 72 6f 72 22 20 2f 3e 2e 0d 0a 20 20 20 20 20  rror" />...     
237e0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
237f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
23800 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
23810 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
23820 65 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  e ModuleNotAvail
23830 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
23840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23850 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
23860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23870 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
23880 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23890 20 20 20 20 53 65 74 43 75 72 73 6f 72 45 72 72      SetCursorErr
238a0 6f 72 28 6e 75 6c 6c 2c 20 70 43 75 72 73 6f 72  or(null, pCursor
238b0 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72 6f  , DefaultLogErro
238c0 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs,..           
238d0 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74           Default
238e0 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73 2c 20 4d  LogExceptions, M
238f0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
23900 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d  eErrorMessage);.
23910 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23920 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
23930 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
23940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
23950 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
23960 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
23970 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
239b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
239c0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
239d0 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  n ISQLiteNativeM
239e0 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  odule Members.. 
239f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23a00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23a10 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
23a20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
23a30 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
23a40 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74  .xCreate" /> met
23a50 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
23a60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
23a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23a80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
23a90 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  Db">..          
23aa0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
23ab0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
23ac0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
23ad0 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  eate" /> method.
23ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23af0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
23b00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
23b10 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d  am name="pAux">.
23b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23b30 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
23b40 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
23b50 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
23b60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
23b70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
23b80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
23b90 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
23ba0 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
23bb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
23bc0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
23bd0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
23be0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
23bf0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
23c00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
23c20 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
23c30 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  rgv">..         
23c40 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
23c50 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
23c60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
23c70 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64  reate" /> method
23c80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
23c90 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
23ca0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
23cb0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
23cc0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
23cd0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
23ce0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
23cf0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
23d00 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
23d10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
23d20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
23d30 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
23d40 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a  name="pError">..
23d50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
23d60 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
23d70 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
23d80 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
23d90 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
23da0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
23db0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
23dc0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
23dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
23de0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
23df0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
23e00 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
23e10 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
23e20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
23e30 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
23e40 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
23e50 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 72 65  teErrorCode xCre
23e60 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
23e70 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
23e80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23e90 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
23ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23eb0 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20   int argc,..    
23ec0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
23ed0 74 72 20 61 72 67 76 2c 0d 0a 20 20 20 20 20 20  tr argv,..      
23ee0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
23ef0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
23f10 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
23f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
23f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23f50 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
23f60 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
23f70 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
23f80 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
23f90 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
23fa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
23fb0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
23fc0 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
23fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23fe0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
23ff0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
24000 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24010 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
24020 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
24030 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
24040 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
24050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24060 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
24070 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b  leErrorMessage);
24080 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24090 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
240a0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
240b0 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  rror;..         
240c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
240d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
240e0 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74  rn module.xCreat
240f0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
24100 20 20 20 20 20 20 20 20 70 44 62 2c 20 70 41 75          pDb, pAu
24110 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72  x, argc, argv, r
24120 65 66 20 70 56 74 61 62 2c 20 72 65 66 20 70 45  ef pVtab, ref pE
24130 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
24140 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
24150 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
24160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24190 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
241a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
241b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
241c0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
241d0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
241e0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
241f0 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
24200 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
24210 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
24220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24230 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62  <param name="pDb
24240 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
24250 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
24260 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
24270 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  tiveModule.xConn
24280 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
24290 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
242a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
242b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
242c0 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a  m name="pAux">..
242d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
242e0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
242f0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
24300 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
24310 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
24320 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
24330 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
24340 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24350 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
24360 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24370 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24380 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24390 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  le.xConnect" /> 
243a0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
243b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
243c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
243d0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
243e0 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20  argv">..        
243f0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
24400 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
24410 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
24420 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
24430 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
24440 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
24450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
24460 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
24470 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
24480 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
24490 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
244a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
244b0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
244c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
244d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
244e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
244f0 61 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22  am name="pError"
24500 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24510 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24520 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24530 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
24540 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
24550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24560 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
24570 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
24580 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
24590 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
245a0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
245b0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
245c0 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
245d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
245e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
245f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
24600 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24610 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20   xConnect(..    
24620 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
24630 74 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20  tr pDb,..       
24640 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
24650 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20  pAux,..         
24660 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
24670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24680 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a    IntPtr argv,..
24690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246a0 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
246b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
246c0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 45     ref IntPtr pE
246d0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
246e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
246f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24700 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
24710 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
24720 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
24730 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
24740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
24750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24760 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
24770 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
24780 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
24790 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
247a0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
247b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
247c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247d0 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65   pError = SQLite
247e0 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
247f0 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
24800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24810 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74 41        ModuleNotA
24820 76 61 69 6c 61 62 6c 65 45 72 72 6f 72 4d 65 73  vailableErrorMes
24830 73 61 67 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sage);....      
24840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24850 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
24860 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
24870 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24890 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
248a0 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
248b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
248c0 44 62 2c 20 70 41 75 78 2c 20 61 72 67 63 2c 20  Db, pAux, argc, 
248d0 61 72 67 76 2c 20 72 65 66 20 70 56 74 61 62 2c  argv, ref pVtab,
248e0 20 72 65 66 20 70 45 72 72 6f 72 29 3b 0d 0a 20   ref pError);.. 
248f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
24900 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
24910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24950 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24960 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24970 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
24980 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24990 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
249a0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
249b0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
249c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
249d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
249e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
249f0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
24a00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24a10 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24a20 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24a30 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
24a40 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24a50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24a60 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24a70 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
24a80 61 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20  ame="pIndex">.. 
24a90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
24aa0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
24ab0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24ac0 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
24ad0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24ae0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24af0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24b00 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
24b10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24b20 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24b30 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24b40 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
24b50 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
24b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24b70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
24b80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
24b90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
24ba0 20 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20   xBestIndex(..  
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
24bc0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
24be0 50 74 72 20 70 49 6e 64 65 78 0d 0a 20 20 20 20  Ptr pIndex..    
24bf0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
24c00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
24c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24c30 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
24c40 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
24c50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24c60 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
24c70 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
24c80 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
24c90 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
24ca0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
24cb0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cd0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
24ce0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
24cf0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
24d00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24d10 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
24d20 2e 78 42 65 73 74 49 6e 64 65 78 28 70 56 74 61  .xBestIndex(pVta
24d30 62 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20 20 20  b, pIndex);..   
24d40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
24d50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
24d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24db0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24dc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
24dd0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
24de0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
24df0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
24e00 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
24e10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
24e20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
24e30 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
24e40 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
24e50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
24e60 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
24e70 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
24e80 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
24e90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
24ea0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
24eb0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
24ec0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
24ed0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
24ee0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
24ef0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
24f00 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f  iveModule.xDisco
24f10 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
24f20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24f30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
24f40 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
24f50 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
24f60 65 20 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  e xDisconnect(..
24f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f80 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20  IntPtr pVtab..  
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
24fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
24fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fc0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
24fd0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
24fe0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
24ff0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
25000 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
25010 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
25020 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
25030 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
25040 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25050 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
25060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25070 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
25080 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
25090 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
250a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
250b0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
250c0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70  le.xDisconnect(p
250d0 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
250e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
250f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
25100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25130 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
25140 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
25150 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
25160 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
25170 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
25180 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
25190 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
251a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
251b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
251c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
251d0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
251e0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ab">..          
251f0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25200 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25210 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
25220 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
25230 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25240 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
25250 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 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 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
25280 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
25290 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
252a0 44 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68  Destroy" /> meth
252b0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
252c0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
252d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
252e0 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
252f0 6f 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20  ode xDestroy(.. 
25300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
25310 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
25330 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
25350 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
25360 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c     // NOTE: Call
25370 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64  ed by native cod
25380 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
25390 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
253a0 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b          // Check
253b0 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45  Disposed(); /* E
253c0 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20  XEMPT */....    
253d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
253e0 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
253f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25400 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
25410 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
25420 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
25430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25440 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
25450 65 2e 78 44 65 73 74 72 6f 79 28 70 56 74 61 62  e.xDestroy(pVtab
25460 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
25470 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
25480 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
25490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
254c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
254d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
254e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
254f0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25500 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25510 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22  iveModule.xOpen"
25520 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
25530 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
25540 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25550 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25560 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
25570 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
25580 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
25590 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
255a0 6f 64 75 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20  odule.xOpen" /> 
255b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
255c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
255d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
255e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
255f0 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  pCursor">..     
25600 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
25610 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
25620 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
25630 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68  e.xOpen" /> meth
25640 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25650 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25660 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25670 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
25680 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25690 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
256a0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
256b0 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  .xOpen" /> metho
256c0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
256d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
256e0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
256f0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
25700 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
25710 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25720 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
25730 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
25740 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
25750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
25760 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
25770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25780 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
25790 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
257a0 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
257b0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
257c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
257d0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
257e0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
257f0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25810 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
25820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25830 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
25840 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
25850 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
25860 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25870 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
25880 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61 62 2c 20  le.xOpen(pVtab, 
25890 72 65 66 20 70 43 75 72 73 6f 72 29 3b 0d 0a 20  ref pCursor);.. 
258a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
258b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
258c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
258f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
25900 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
25910 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
25920 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25930 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25940 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25950 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20  dule.xClose" /> 
25960 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25970 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
25980 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25990 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
259a0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
259b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
259c0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
259d0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
259e0 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
259f0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25a00 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
25a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25a20 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
25a30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
25a40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
25a50 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
25a60 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f 3e 20 6d  ule.xClose" /> m
25a70 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25a80 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
25a90 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
25aa0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
25ab0 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65 28 0d 0a  orCode xClose(..
25ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ad0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
25ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25af0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
25b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25b10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
25b20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
25b30 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
25b40 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
25b50 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
25b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
25b70 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
25b80 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25ba0 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
25bb0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25bc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d          return M
25bd0 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c  oduleNotAvailabl
25be0 65 43 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75  eCursorError(pCu
25bf0 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsor);....      
25c00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25c10 20 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70   module.xClose(p
25c20 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
25c30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25c40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
25c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25c90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
25ca0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25cb0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25cc0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25cd0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25ce0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
25cf0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25d00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
25d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25d20 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
25d30 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
25d40 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25d50 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25d60 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25d70 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
25d80 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25d90 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25da0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25db0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e  param name="idxN
25dc0 75 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  um">..          
25dd0 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
25de0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
25df0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
25e00 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
25e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25e20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
25e30 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
25e40 61 6d 20 6e 61 6d 65 3d 22 69 64 78 53 74 72 22  am name="idxStr"
25e50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25e60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25e70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25e80 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
25e90 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
25ea0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25eb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25ec0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25ed0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
25ee0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25ef0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25f00 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
25f10 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e  dule.xFilter" />
25f20 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
25f30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
25f40 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
25f50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25f60 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
25f70 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25f80 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25f90 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25fa0 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68  xFilter" /> meth
25fb0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25fc0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
25fd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25fe0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
25ff0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
26000 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
26010 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
26020 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  .xFilter" /> met
26030 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
26040 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
26050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
26060 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
26070 43 6f 64 65 20 78 46 69 6c 74 65 72 28 0d 0a 20  Code xFilter(.. 
26080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
26090 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
260a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260b0 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20  int idxNum,..   
260c0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
260d0 50 74 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20  Ptr idxStr,..   
260e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
260f0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
26100 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 61          IntPtr a
26110 72 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rgv..           
26120 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
26130 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26140 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
26160 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61  TE: Called by na
26170 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20  tive code...    
26180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
26190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261a0 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  // CheckDisposed
261b0 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f  (); /* EXEMPT */
261c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
261d0 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d      if (module =
261e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
261f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26200 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61  urn ModuleNotAva
26210 69 6c 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f  ilableCursorErro
26220 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26240 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 46 69  eturn module.xFi
26250 6c 74 65 72 28 70 43 75 72 73 6f 72 2c 20 69 64  lter(pCursor, id
26260 78 4e 75 6d 2c 20 69 64 78 53 74 72 2c 20 61 72  xNum, idxStr, ar
26270 67 63 2c 20 61 72 67 76 29 3b 0d 0a 20 20 20 20  gc, argv);..    
26280 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26290 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
262a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
262d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
262e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
262f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
26300 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
26310 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
26320 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
26330 65 2e 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68  e.xNext" /> meth
26340 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
26350 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
26360 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26370 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
26380 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
26390 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
263a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
263b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
263c0 78 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64  xNext" /> method
263d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
263e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
263f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
26400 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26410 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26420 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26430 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26440 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Next" /> method.
26450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26460 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
26470 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
26480 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26490 20 78 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20   xNext(..       
264a0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
264b0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
264c0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
264d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
264e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
264f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26500 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62  / NOTE: Called b
26510 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  y native code...
26520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26530 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
26540 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
26550 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50  osed(); /* EXEMP
26560 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  T */....        
26570 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
26580 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
26590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265a0 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f   return ModuleNo
265b0 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72  tAvailableCursor
265c0 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d  Error(pCursor);.
265d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
265e0 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65     return module
265f0 2e 78 4e 65 78 74 28 70 43 75 72 73 6f 72 29 3b  .xNext(pCursor);
26600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26610 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26660 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
26670 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26680 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26690 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
266a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
266b0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
266c0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
266d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
266e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
266f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
26700 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
26710 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26720 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26730 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26740 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65  dule.xEof" /> me
26750 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
26760 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
26770 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26780 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
26790 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
267a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
267b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
267c0 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d 65 74 68  le.xEof" /> meth
267d0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
267e0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
267f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
26800 6c 69 63 20 69 6e 74 20 78 45 6f 66 28 0d 0a 20  lic int xEof(.. 
26810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
26820 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
26830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
26840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
26850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26860 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
26870 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61       // NOTE: Ca
26880 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63  lled by native c
26890 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
268a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
268b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
268c0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a  ckDisposed(); /*
268d0 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20   EXEMPT */....  
268e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
268f0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
26900 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26910 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26920 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
26930 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
26940 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29  orError(pCursor)
26950 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26960 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b         return 1;
26970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26980 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
26990 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
269a0 64 75 6c 65 2e 78 45 6f 66 28 70 43 75 72 73 6f  dule.xEof(pCurso
269b0 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
269c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
269d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
269e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
269f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a10 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
26a20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
26a30 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
26a40 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
26a50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
26a60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75  tiveModule.xColu
26a70 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  mn" /> method...
26a80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26a90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
26aa0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26ab0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
26ac0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
26ad0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
26ae0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
26af0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75  tiveModule.xColu
26b00 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  mn" /> method...
26b10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26b20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
26b30 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
26b40 20 6e 61 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22   name="pContext"
26b50 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26b60 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26b70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26b80 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
26b90 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
26ba0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
26bb0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
26bc0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
26bd0 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20  name="index">.. 
26be0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
26bf0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
26c00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
26c10 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f  odule.xColumn" /
26c20 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26c30 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26c40 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26c50 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
26c60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26c70 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26c80 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26c90 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
26ca0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
26cc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26cd0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
26ce0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75  eErrorCode xColu
26cf0 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mn(..           
26d00 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
26d10 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
26d20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6f        IntPtr pCo
26d30 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20  ntext,..        
26d40 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
26d50 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  x..             
26d60 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26d70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26d80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
26d90 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
26da0 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69  : Called by nati
26db0 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  ve code...      
26dc0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26de0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
26df0 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a  ; /* EXEMPT */..
26e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26e10 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20    if (module == 
26e20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
26e30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26e40 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  n ModuleNotAvail
26e50 61 62 6c 65 43 75 72 73 6f 72 45 72 72 6f 72 28  ableCursorError(
26e60 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20  pCursor);....   
26e70 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26e80 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75  urn module.xColu
26e90 6d 6e 28 70 43 75 72 73 6f 72 2c 20 70 43 6f 6e  mn(pCursor, pCon
26ea0 74 65 78 74 2c 20 69 6e 64 65 78 29 3b 0d 0a 20  text, index);.. 
26eb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
26ec0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
26ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26f10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26f20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
26f30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26f40 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26f50 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26f60 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20  dule.xRowId" /> 
26f70 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
26f80 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
26f90 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
26fa0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
26fb0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
26fc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
26fd0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26fe0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
26ff0 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e 20 6d  ule.xRowId" /> m
27000 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27010 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27030 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
27040 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20  owId">..        
27050 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27060 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27070 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27080 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64  RowId" /> method
27090 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
270a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
270b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
270c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
270d0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
270e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
270f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27100 52 6f 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64  RowId" /> method
27110 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27120 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27130 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
27140 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
27150 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20  e xRowId(..     
27160 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
27170 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20  r pCursor,..    
27180 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
27190 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20 20  long rowId..    
271a0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
271b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
271c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
271d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
271e0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65    // NOTE: Calle
271f0 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65  d by native code
27200 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
27210 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27220 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
27230 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58  isposed(); /* EX
27240 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  EMPT */....     
27250 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
27260 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
27270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27280 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
27290 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
272a0 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
272b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
272c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
272d0 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75 72 73  ule.xRowId(pCurs
272e0 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d  or, ref rowId);.
272f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
27300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27350 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27360 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27370 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27380 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27390 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
273a0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
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 73 75          /// </su
273d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
273e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
273f0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
27400 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
27410 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
27420 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
27430 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f 3e  dule.xUpdate" />
27440 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27450 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27460 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27470 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
27480 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
27490 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
274a0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
274b0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
274c0 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  xUpdate" /> meth
274d0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
274e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
274f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27500 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 76  param name="argv
27510 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
27520 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
27530 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
27540 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
27550 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
27560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27570 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
27580 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
27590 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a   name="rowId">..
275a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
275b0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
275c0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
275d0 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20  Module.xUpdate" 
275e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
275f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27600 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
27610 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
27620 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27630 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27640 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27650 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
27660 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27670 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
27680 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
27690 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
276a0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64  teErrorCode xUpd
276b0 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
276c0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
276d0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
276e0 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a       int argc,..
276f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27700 49 6e 74 50 74 72 20 61 72 67 76 2c 0d 0a 20 20  IntPtr argv,..  
27710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27720 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20  f long rowId..  
27730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
27740 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
27750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27760 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27770 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c      // NOTE: Cal
27780 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20 63 6f  led by native co
27790 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de...           
277a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
277b0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
277c0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20  kDisposed(); /* 
277d0 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20  EXEMPT */....   
277e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
277f0 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
27800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27810 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
27820 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
27830 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
27840 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
27850 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
27860 6c 65 2e 78 55 70 64 61 74 65 28 70 56 74 61 62  le.xUpdate(pVtab
27870 2c 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65  , argc, argv, re
27880 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20  f rowId);..     
27890 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
278a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
278b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
278e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
278f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27900 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
27910 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
27920 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
27930 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
27940 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68  .xBegin" /> meth
27950 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
27960 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
27970 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27980 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
27990 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
279a0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
279b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
279c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
279d0 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  egin" /> method.
279e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
279f0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27a00 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
27a10 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
27a20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27a30 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27a40 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
27a50 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  egin" /> method.
27a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27a70 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
27a80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
27a90 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
27aa0 20 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20   xBegin(..      
27ab0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
27ac0 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20   pVtab..        
27ad0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
27ae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27af0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27b10 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79   NOTE: Called by
27b20 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20   native code... 
27b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27b40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27b50 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
27b60 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54  sed(); /* EXEMPT
27b70 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
27b80 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c         if (modul
27b90 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27bb0 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74  return ModuleNot
27bc0 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72  AvailableTableEr
27bd0 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ror(pVtab);.... 
27be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
27bf0 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 42 65  eturn module.xBe
27c00 67 69 6e 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  gin(pVtab);..   
27c10 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27c20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
27c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
27c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27c80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
27c90 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27ca0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27cb0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27cc0 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74  le.xSync" /> met
27cd0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
27ce0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
27cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27d00 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
27d10 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
27d20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
27d30 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
27d40 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
27d50 53 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Sync" /> method.
27d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27d70 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27d80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
27d90 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
27da0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
27db0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
27dc0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53  eNativeModule.xS
27dd0 79 6e 63 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ync" /> method..
27de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27df0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
27e00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
27e10 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
27e20 78 53 79 6e 63 28 0d 0a 20 20 20 20 20 20 20 20  xSync(..        
27e30 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
27e40 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
27e50 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
27e60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27e70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
27e80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
27e90 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
27ea0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
27eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ed0 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
27ee0 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
27ef0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
27f00 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
27f10 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
27f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
27f30 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
27f40 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
27f50 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
27f60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27f70 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63  urn module.xSync
27f80 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20  (pVtab);..      
27f90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27fa0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
27fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
27ff0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
28000 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28010 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28020 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28030 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28040 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
28050 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28060 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
28070 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28080 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
28090 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
280a0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
280b0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
280c0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
280d0 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f 64  ommit" /> method
280e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
280f0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
28100 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
28110 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
28120 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
28130 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28140 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28150 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
28160 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28170 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
28180 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28190 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
281a0 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20  de xCommit(..   
281b0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74               Int
281c0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
281d0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
281e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
281f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28210 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
28220 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
28230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28240 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28250 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
28260 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
28270 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
28280 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
28290 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
282a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282b0 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
282c0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
282d0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
282e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
282f0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
28300 78 43 6f 6d 6d 69 74 28 70 56 74 61 62 29 3b 0d  xCommit(pVtab);.
28310 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
28320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28370 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
28380 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28390 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
283a0 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
283b0 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
283c0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
283d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
283e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
283f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28400 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
28410 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
28420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28430 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
28440 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
28450 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
28460 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28470 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28480 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
28490 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
284a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
284b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
284c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
284d0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
284e0 61 63 6b 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ack" /> method..
284f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28500 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
28510 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
28520 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
28530 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  xRollback(..    
28540 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
28550 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
28560 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
28570 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28580 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285a0 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64 20  // NOTE: Called 
285b0 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d  by native code..
285c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
285d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
285e0 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
285f0 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45 4d  posed(); /* EXEM
28600 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  PT */....       
28610 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
28620 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
28630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28640 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
28650 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
28660 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d  Error(pVtab);...
28670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28680 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78   return module.x
28690 52 6f 6c 6c 62 61 63 6b 28 70 56 74 61 62 29 3b  Rollback(pVtab);
286a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
286b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
286c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
286f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28700 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
28710 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
28720 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28730 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28740 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28750 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
28760 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
28770 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
28780 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
28790 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
287a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
287b0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
287c0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
287d0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
287e0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
287f0 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
28800 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28810 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28820 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28830 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 41   <param name="nA
28840 72 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rg">..          
28850 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
28860 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
28870 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
28880 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
28890 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
288a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
288b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
288c0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a  / <param name="z
288d0 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  Name">..        
288e0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
288f0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
28900 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
28910 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  FindFunction" />
28920 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28930 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
28940 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28950 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
28960 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20  "callback">..   
28970 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
28980 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
28990 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
289a0 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
289b0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
289c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
289d0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
289e0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
289f0 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
28a00 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a">..           
28a10 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28a20 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28a30 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e  ativeModule.xFin
28a40 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65  dFunction" /> me
28a50 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28a60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
28a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28a80 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
28a90 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
28aa0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
28ab0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
28ac0 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
28ad0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28ae0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28af0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28b00 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
28b10 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d   xFindFunction(.
28b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28b30 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
28b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b50 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20 20 20  int nArg,..     
28b60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
28b70 72 20 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  r zName,..      
28b80 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
28b90 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61 6c  LiteCallback cal
28ba0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
28bb0 20 20 20 20 20 20 20 20 72 65 66 20 49 6e 74 50          ref IntP
28bc0 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a  tr pClientData..
28bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28be0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
28bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28c00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28c10 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
28c20 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65 20  alled by native 
28c30 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  code...         
28c40 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28c50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68             // Ch
28c60 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 2f  eckDisposed(); /
28c70 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a 20  * EXEMPT */.... 
28c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28c90 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c  f (module == nul
28ca0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
28cb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28cc0 20 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c             Modul
28cd0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62  eNotAvailableTab
28ce0 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d  leError(pVtab);.
28cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28d00 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a       return 0;..
28d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28d30 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
28d40 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  le.xFindFunction
28d50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
28d60 20 20 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41         pVtab, nA
28d70 72 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63  rg, zName, ref c
28d80 61 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c  allback, ref pCl
28d90 69 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20  ientData);..    
28da0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28db0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28e00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28e10 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
28e20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
28e30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
28e40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
28e50 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
28e60 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
28e70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28e80 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28e90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
28ea0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
28eb0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
28ec0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
28ed0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
28ee0 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68  xRename" /> meth
28ef0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
28f00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
28f10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28f20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77  param name="zNew
28f30 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28f40 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28f50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28f60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
28f70 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
28f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
28f90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
28fa0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
28fb0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
28fc0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28fd0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28fe0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e  ativeModule.xRen
28ff0 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ame" /> method..
29000 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29010 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
29020 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
29030 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
29040 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
29050 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
29060 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
29070 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
29080 7a 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20  zNew..          
29090 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
290a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
290b0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
290c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
290d0 4f 54 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e  OTE: Called by n
290e0 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20  ative code...   
290f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
29100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29110 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65   // CheckDispose
29120 64 28 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a  d(); /* EXEMPT *
29130 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
29140 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
29150 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
29160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29170 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
29180 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
29190 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
291a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
291b0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 52 65 6e 61  urn module.xRena
291c0 6d 65 28 70 56 74 61 62 2c 20 7a 4e 65 77 29 3b  me(pVtab, zNew);
291d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
291e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
291f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29230 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
29240 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29250 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29260 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29270 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
29280 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69  eModule.xSavepoi
29290 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  nt" /> method...
292a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
292b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
292c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
292d0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
292e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
292f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29300 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29310 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  veModule.xSavepo
29320 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  int" /> method..
29330 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29340 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
29350 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
29360 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69  m name="iSavepoi
29370 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  nt">..          
29380 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29390 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
293a0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61  NativeModule.xSa
293b0 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68  vepoint" /> meth
293c0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
293d0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
293e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
293f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
29400 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29410 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29420 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29430 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
29440 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29450 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
29460 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
29470 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
29480 72 6f 72 43 6f 64 65 20 78 53 61 76 65 70 6f 69  rorCode xSavepoi
29490 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt(..           
294a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
294b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
294c0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
294d0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
294e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
294f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29500 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
29510 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
29520 45 3a 20 43 61 6c 6c 65 64 20 62 79 20 6e 61 74  E: Called by nat
29530 69 76 65 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  ive code...     
29540 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
29550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29560 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
29570 29 3b 20 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d  ); /* EXEMPT */.
29580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29590 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d     if (module ==
295a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
295b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
295c0 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69  rn ModuleNotAvai
295d0 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28  lableTableError(
295e0 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20  pVtab);....     
295f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
29600 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f  n module.xSavepo
29610 69 6e 74 28 70 56 74 61 62 2c 20 69 53 61 76 65  int(pVtab, iSave
29620 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20  point);..       
29630 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29640 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
29650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29680 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29690 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
296a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
296b0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
296c0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
296d0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
296e0 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68  Release" /> meth
296f0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29700 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
29710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29720 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
29730 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  tab">..         
29740 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
29750 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
29760 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
29770 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  elease" /> metho
29780 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29790 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
297a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
297b0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65  aram name="iSave
297c0 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20  point">..       
297d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
297e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
297f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29800 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65 74  xRelease" /> met
29810 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29820 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
29830 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29840 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
29850 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29860 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29870 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29880 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
29890 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
298a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
298b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
298c0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
298d0 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65 28  orCode xRelease(
298e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
298f0 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d    IntPtr pVtab,.
29900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29910 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
29920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29930 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
29940 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
29950 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
29960 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
29970 43 61 6c 6c 65 64 20 62 79 20 6e 61 74 69 76 65  Called by native
29980 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
29990 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
299a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
299b0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
299c0 2f 2a 20 45 58 45 4d 50 54 20 2a 2f 0d 0a 0d 0a  /* EXEMPT */....
299d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299e0 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
299f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
29a00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29a10 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
29a20 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
29a30 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
29a40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
29a50 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 28 70  odule.xRelease(p
29a60 56 74 61 62 2c 20 69 53 61 76 65 70 6f 69 6e 74  Vtab, iSavepoint
29a70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29a80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
29a90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
29aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ad0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
29ae0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29af0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29b00 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29b10 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29b20 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
29b30 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64  ackTo" /> method
29b40 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
29b50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
29b60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29b70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
29b80 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
29b90 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
29ba0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
29bb0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c  ativeModule.xRol
29bc0 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68  lbackTo" /> meth
29bd0 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29be0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
29bf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29c00 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76  param name="iSav
29c10 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  epoint">..      
29c20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29c30 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29c40 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29c50 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e  .xRollbackTo" />
29c60 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
29c70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
29c80 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
29c90 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
29ca0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
29cb0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
29cc0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
29cd0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
29ce0 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  o" /> method... 
29cf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29d00 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
29d10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
29d20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 52  LiteErrorCode xR
29d30 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
29d40 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
29d50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
29d60 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
29d70 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20  Savepoint..     
29d80 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
29d90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29da0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
29db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29dc0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 6c 6c 65 64   // NOTE: Called
29dd0 20 62 79 20 6e 61 74 69 76 65 20 63 6f 64 65 2e   by native code.
29de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29df0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
29e00 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
29e10 73 70 6f 73 65 64 28 29 3b 20 2f 2a 20 45 58 45  sposed(); /* EXE
29e20 4d 50 54 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  MPT */....      
29e30 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
29e40 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
29e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e60 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
29e70 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
29e80 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
29e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29ea0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
29eb0 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 70 56 74 61  xRollbackTo(pVta
29ec0 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d  b, iSavepoint);.
29ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
29ee0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
29ef0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
29f00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29f50 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
29f60 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
29f70 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
29f80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
29f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29fa0 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69   Disposes of thi
29fb0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
29fc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
29fd0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
29fe0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
29ff0 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
2a000 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2a010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a020 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
2a030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a040 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e    GC.SuppressFin
2a050 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20  alize(this);..  
2a060 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a070 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2a080 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
2a090 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2a0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2a0e0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
2a0f0 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65  isposable "Patte
2a100 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  rn" Members..   
2a110 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
2a120 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
2a130 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a140 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a150 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f          /// Thro
2a160 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ws an <see cref=
2a170 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45  "ObjectDisposedE
2a180 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69 66 20  xception" /> if 
2a190 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20 20 20  this object..   
2a1a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73           /// ins
2a1b0 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64  tance has been d
2a1c0 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
2a1d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2a1e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
2a1f0 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43    private void C
2a200 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f  heckDisposed() /
2a210 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2a220 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
2a230 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
2a240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a250 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d    if (disposed).
2a260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a270 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a280 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2a290 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
2a2a0 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2c0 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
2a2d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e  eNativeModule).N
2a2e0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
2a2f0 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
2a300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a310 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a360 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2a370 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2a380 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a390 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74 68 69   Disposes of thi
2a3a0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2a3b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2a3c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2a3d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a3e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73  <param name="dis
2a3f0 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20  posing">..      
2a400 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65        /// Non-ze
2a410 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
2a420 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
2a430 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
2a440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
2a450 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28 29   cref="Dispose()
2a460 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65  " /> method.  Ze
2a470 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
2a480 64 20 69 73 20 62 65 69 6e 67 0d 0a 20 20 20 20  d is being..    
2a490 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c          /// call
2a4a0 65 64 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61  ed from the fina
2a4b0 6c 69 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  lizer...        
2a4c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2a4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2a4e0 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74  ivate /* protect
2a4f0 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f  ed virtual */ vo
2a500 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
2a510 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
2a520 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a530 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
2a540 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
2a550 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a570 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e    //if (disposin
2a580 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
2a590 20 20 20 20 20 20 20 20 2f 2f 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 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
2a5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a5f0 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73   //    // dispos
2a600 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
2a610 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a630 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
2a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
2a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a670 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20   //}....        
2a680 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a6b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2a6c0 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61          // relea
2a6d0 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73  se unmanaged res
2a6e0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
2a6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a700 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a740 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a750 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2a760 45 3a 20 54 68 65 20 6d 6f 64 75 6c 65 20 69 73  E: The module is
2a770 20 6e 6f 74 20 6f 77 6e 65 64 20 62 79 20 75 73   not owned by us
2a780 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 64 6f 20  ; therefore, do 
2a790 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  not..           
2a7a0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2a7b0 20 20 64 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20    dispose it... 
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2a7e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
2a7f0 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  odule != null)..
2a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a810 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d          module =
2a820 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
2a830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
2a840 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  sposed = true;..
2a850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a860 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2a870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2a880 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a890 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a8e0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2a8f0 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20  on Destructor.. 
2a900 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a910 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a920 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
2a930 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
2a940 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
2a950 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2a960 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2a970 20 20 20 7e 53 51 4c 69 74 65 4e 61 74 69 76 65     ~SQLiteNative
2a980 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20  Module()..      
2a990 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a9a0 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
2a9b0 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
2a9c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a9d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2a9e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2a9f0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2aa00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2aa60 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
2aa70 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
2aa80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2aa90 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64         /// The d
2aaa0 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e 20 6f  efault version o
2aab0 66 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  f the native sql
2aac0 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2aad0 63 74 75 72 65 20 69 6e 20 75 73 65 2e 0d 0a 20  cture in use... 
2aae0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2aaf0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2ab00 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
2ab10 61 64 6f 6e 6c 79 20 69 6e 74 20 44 65 66 61 75  adonly int Defau
2ab20 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69 6f 6e 20  ltModuleVersion 
2ab30 3d 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  = 2;..        #e
2ab40 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2ab50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2aba0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2abb0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
2abc0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2abd0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2abe0 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75 73  This field is us
2abf0 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
2ac00 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2ac10 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 0d  odule structure.
2ac20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  .        /// ass
2ac30 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
2ac40 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2ac50 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
2ac60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2ac70 20 20 20 20 70 72 69 76 61 74 65 20 55 6e 73 61      private Unsa
2ac80 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ac90 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e  sqlite3_module n
2aca0 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a  ativeModule;....
2acb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2acf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2ad00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2ad10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2ad20 20 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64    /// This field
2ad30 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72   is used to stor
2ad40 65 20 74 68 65 20 64 65 73 74 72 75 63 74 6f 72  e the destructor
2ad50 20 64 65 6c 65 67 61 74 65 20 74 6f 20 62 65 20   delegate to be 
2ad60 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20  passed to..     
2ad70 20 20 20 2f 2f 2f 20 74 68 65 20 53 51 4c 69 74     /// the SQLit
2ad80 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 76  e core library v
2ad90 69 61 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  ia the sqlite3_c
2ada0 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
2adb0 5f 6d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20  _module()..     
2adc0 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 2e     /// function.
2add0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2ade0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2adf0 20 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65    private Unsafe
2ae00 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44  NativeMethods.xD
2ae10 65 73 74 72 6f 79 4d 6f 64 75 6c 65 20 64 65 73  estroyModule des
2ae20 74 72 6f 79 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20  troyModule;.... 
2ae30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ae70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ae80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2ae90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2aea0 20 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20   /// This field 
2aeb0 69 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65  is used to store
2aec0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
2aed0 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33  e native sqlite3
2aee0 5f 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20  _module..       
2aef0 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 72   /// structure r
2af00 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 73  eturned by the s
2af10 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
2af20 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 0d  sposable_module.
2af30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 75 6e  .        /// fun
2af40 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
2af50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2af60 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2af70 49 6e 74 50 74 72 20 64 69 73 70 6f 73 61 62 6c  IntPtr disposabl
2af80 65 4d 6f 64 75 6c 65 3b 0d 0a 0d 0a 20 20 20 20  eModule;....    
2af90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2afa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23  ///////////....#
2afe0 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
2aff0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2b000 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2b010 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2b020 20 54 68 69 73 20 66 69 65 6c 64 20 69 73 20 75   This field is u
2b030 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  sed to hold the 
2b040 62 6c 6f 63 6b 20 6f 66 20 6e 61 74 69 76 65 20  block of native 
2b050 6d 65 6d 6f 72 79 20 74 68 61 74 20 63 6f 6e 74  memory that cont
2b060 61 69 6e 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ains..        //
2b070 2f 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  / the native sql
2b080 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74 72 75  ite3_module stru
2b090 63 74 75 72 65 20 61 73 73 6f 63 69 61 74 65 64  cture associated
2b0a0 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
2b0b0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  t..        /// i
2b0c0 6e 73 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e  nstance when run
2b0d0 6e 69 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54  ning on the .NET
2b0e0 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
2b0f0 72 6b 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rk...        ///
2b100 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2b110 20 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74       private Int
2b120 50 74 72 20 70 4e 61 74 69 76 65 4d 6f 64 75 6c  Ptr pNativeModul
2b130 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  e;..#endif....  
2b140 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d  /////////////...
2b190 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2b1a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b1b0 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2b1c0 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
2b1d0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
2b1e0 65 20 69 6e 73 74 61 6e 63 65 73 20 61 73 73 6f  e instances asso
2b1f0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
2b200 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6d 6f  /// with this mo
2b210 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 74 69 76  dule.  The nativ
2b220 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
2b230 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
2b240 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  rived..        /
2b250 2f 2f 20 73 74 72 75 63 74 75 72 65 20 69 73 20  // structure is 
2b260 75 73 65 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f  used to key into
2b270 20 74 68 69 73 20 63 6f 6c 6c 65 63 74 69 6f 6e   this collection
2b280 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b290 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2b2a0 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
2b2b0 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51  onary<IntPtr, SQ
2b2c0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
2b2d0 3e 20 74 61 62 6c 65 73 3b 0d 0a 0d 0a 20 20 20  > tables;....   
2b2e0 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2b330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b340 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2b350 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69 73  // This field is
2b360 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20 74   used to store t
2b370 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
2b380 20 63 75 72 73 6f 72 20 69 6e 73 74 61 6e 63 65   cursor instance
2b390 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61  s..        /// a
2b3a0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
2b3b0 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65  his module.  The
2b3c0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
2b3d0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
2b3e0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62  /// sqlite3_vtab
2b3f0 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
2b400 73 74 72 75 63 74 75 72 65 20 69 73 20 75 73 65  structure is use
2b410 64 20 74 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68  d to key into th
2b420 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
2b430 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  collection...   
2b440 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b450 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b460 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c  vate Dictionary<
2b470 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65 56 69  IntPtr, SQLiteVi
2b480 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
2b490 3e 20 63 75 72 73 6f 72 73 3b 0d 0a 0d 0a 20 20  > cursors;....  
2b4a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b4f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
2b500 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2b510 2f 2f 2f 20 54 68 69 73 20 66 69 65 6c 64 20 69  /// This field i
2b520 73 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 20  s used to store 
2b530 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
2b540 65 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61  e function insta
2b550 6e 63 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nces..        //
2b560 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
2b570 68 20 74 68 69 73 20 6d 6f 64 75 6c 65 2e 20 20  h this module.  
2b580 54 68 65 20 63 61 73 65 2d 69 6e 73 65 6e 73 69  The case-insensi
2b590 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61  tive function na
2b5a0 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  me..        /// 
2b5b0 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  and the number o
2b5c0 66 20 61 72 67 75 6d 65 6e 74 73 20 28 77 69 74  f arguments (wit
2b5d0 68 20 2d 31 20 6d 65 61 6e 69 6e 67 20 22 61 6e  h -1 meaning "an
2b5e0 79 22 29 20 61 72 65 20 75 73 65 64 20 74 6f 0d  y") are used to.
2b5f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  .        /// con
2b600 73 74 72 75 63 74 20 74 68 65 20 73 74 72 69 6e  struct the strin
2b610 67 20 74 68 61 74 20 69 73 20 75 73 65 64 20 74  g that is used t
2b620 6f 20 6b 65 79 20 69 6e 74 6f 20 74 68 69 73 20  o key into this 
2b630 63 6f 6c 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  collection...   
2b640 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2b650 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2b660 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c  vate Dictionary<
2b670 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65 46 75  string, SQLiteFu
2b680 6e 63 74 69 6f 6e 3e 20 66 75 6e 63 74 69 6f 6e  nction> function
2b690 73 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  s;..        #end
2b6a0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2b6b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b700 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
2b710 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
2b720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2b730 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2b740 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
2b750 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
2b760 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
2b770 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b780 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2b790 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
2b7a0 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2b7b0 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
2b7c0 20 6d 6f 64 75 6c 65 2e 20 20 54 68 69 73 20 70   module.  This p
2b7d0 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f 74 20  arameter cannot 
2b7e0 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  be null...      
2b7f0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2b800 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2b810 51 4c 69 74 65 4d 6f 64 75 6c 65 28 73 74 72 69  QLiteModule(stri
2b820 6e 67 20 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20  ng name)..      
2b830 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2b840 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c   if (name == nul
2b850 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2b860 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2b870 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
2b880 69 6f 6e 28 22 6e 61 6d 65 22 29 3b 0d 0a 0d 0a  ion("name");....
2b890 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
2b8a0 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 3b 0d 0a 20  .name = name;.. 
2b8b0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2b8c0 74 61 62 6c 65 73 20 3d 20 6e 65 77 20 44 69 63  tables = new Dic
2b8d0 74 69 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20  tionary<IntPtr, 
2b8e0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
2b8f0 6c 65 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  le>();..        
2b900 20 20 20 20 74 68 69 73 2e 63 75 72 73 6f 72 73      this.cursors
2b910 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
2b920 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2b930 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
2b940 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  or>();..        
2b950 20 20 20 20 74 68 69 73 2e 66 75 6e 63 74 69 6f      this.functio
2b960 6e 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  ns = new Diction
2b970 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69  ary<string, SQLi
2b980 74 65 46 75 6e 63 74 69 6f 6e 3e 28 29 3b 0d 0a  teFunction>();..
2b990 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2b9a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2b9b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2b9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b9e0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
2ba10 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 4d 65 74  ion Internal Met
2ba20 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
2ba30 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2ba40 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74       /// Calls t
2ba50 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
2ba60 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e   core library in
2ba70 20 6f 72 64 65 72 20 74 6f 20 63 72 65 61 74 65   order to create
2ba80 20 61 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20   a new..        
2ba90 2f 2f 2f 20 64 69 73 70 6f 73 61 62 6c 65 20 6d  /// disposable m
2baa0 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67  odule containing
2bab0 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
2bac0 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c  ion of a virtual
2bad0 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
2bae0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2baf0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2bb00 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d  ram name="pDb">.
2bb10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
2bb20 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65   native database
2bb30 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 69 6e   connection poin
2bb40 74 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ter to use...   
2bb50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2bb60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
2bb70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
2bb80 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
2bb90 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
2bba0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
2bbb0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  rns>..        in
2bbc0 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 43 72 65 61  ternal bool Crea
2bbd0 74 65 44 69 73 70 6f 73 61 62 6c 65 4d 6f 64 75  teDisposableModu
2bbe0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2bbf0 20 49 6e 74 50 74 72 20 70 44 62 0d 0a 20 20 20   IntPtr pDb..   
2bc00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2bc10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2bc20 20 20 20 69 66 20 28 64 69 73 70 6f 73 61 62 6c     if (disposabl
2bc30 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50 74  eModule != IntPt
2bc40 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
2bc50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2bc60 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
2bc70 20 20 20 20 20 49 6e 74 50 74 72 20 70 4e 61 6d       IntPtr pNam
2bc80 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
2bc90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2bca0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2bcb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2bcc0 20 20 20 20 70 4e 61 6d 65 20 3d 20 53 51 4c 69      pName = SQLi
2bcd0 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
2bce0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 6e 61  PtrFromString(na
2bcf0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
2bd00 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
2bd10 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2bd20 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69 76  te3_module nativ
2bd30 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20  eModule =..     
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
2bd50 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64  llocateNativeMod
2bd60 75 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ule();....      
2bd70 20 20 20 20 20 20 20 20 20 20 64 65 73 74 72 6f            destro
2bd80 79 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20 55 6e  yModule = new Un
2bd90 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2bda0 73 2e 78 44 65 73 74 72 6f 79 4d 6f 64 75 6c 65  s.xDestroyModule
2bdb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bdc0 20 20 20 20 20 20 20 78 44 65 73 74 72 6f 79 4d         xDestroyM
2bdd0 6f 64 75 6c 65 29 3b 0d 0a 0d 0a 23 69 66 20 21  odule);....#if !
2bde0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
2bdf0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
2be00 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
2be10 73 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 0d 0a 20  sableModule =.. 
2be20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be30 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
2be40 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63  ethods.sqlite3_c
2be50 72 65 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65  reate_disposable
2be60 5f 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  _module(..      
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be80 20 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 72 65    pDb, pName, re
2be90 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2c 20  f nativeModule, 
2bea0 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 64 65 73  IntPtr.Zero, des
2beb0 74 72 6f 79 4d 6f 64 75 6c 65 29 3b 0d 0a 0d 0a  troyModule);....
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bed0 72 65 74 75 72 6e 20 28 64 69 73 70 6f 73 61 62  return (disposab
2bee0 6c 65 4d 6f 64 75 6c 65 20 21 3d 20 49 6e 74 50  leModule != IntP
2bef0 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23 65 6c 69 66  tr.Zero);..#elif
2bf00 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
2bf10 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
2bf20 20 20 20 64 69 73 70 6f 73 61 62 6c 65 4d 6f 64     disposableMod
2bf30 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ule =..         
2bf40 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
2bf50 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
2bf60 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
2bf70 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 5f  sposable_module_
2bf80 69 6e 74 65 72 6f 70 28 0d 0a 20 20 20 20 20 20  interop(..      
2bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bfa0 20 70 44 62 2c 20 70 4e 61 6d 65 2c 20 41 6c 6c   pDb, pName, All
2bfb0 6f 63 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  ocateNativeModul
2bfc0 65 49 6e 74 65 72 6f 70 28 29 2c 0d 0a 20 20 20  eInterop(),..   
2bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bfe0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2bff0 2e 69 56 65 72 73 69 6f 6e 2c 20 6e 61 74 69 76  .iVersion, nativ
2c000 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 2c  eModule.xCreate,
2c010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c020 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2c030 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 2c 20  odule.xConnect, 
2c040 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65  nativeModule.xBe
2c050 73 74 49 6e 64 65 78 2c 0d 0a 20 20 20 20 20 20  stIndex,..      
2c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c070 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44   nativeModule.xD
2c080 69 73 63 6f 6e 6e 65 63 74 2c 20 6e 61 74 69 76  isconnect, nativ
2c090 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
2c0a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c0b0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c0c0 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 2c 20 6e 61  Module.xOpen, na
2c0d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73  tiveModule.xClos
2c0e0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
2c0f0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c100 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 2c  eModule.xFilter,
2c110 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e   nativeModule.xN
2c120 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ext,..          
2c130 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2c140 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 2c 20  iveModule.xEof, 
2c150 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2c160 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  lumn,..         
2c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2c180 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
2c190 64 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  d, nativeModule.
2c1a0 78 55 70 64 61 74 65 2c 0d 0a 20 20 20 20 20 20  xUpdate,..      
2c1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1c0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42   nativeModule.xB
2c1d0 65 67 69 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75  egin, nativeModu
2c1e0 6c 65 2e 78 53 79 6e 63 2c 0d 0a 20 20 20 20 20  le.xSync,..     
2c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c200 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2c210 43 6f 6d 6d 69 74 2c 20 6e 61 74 69 76 65 4d 6f  Commit, nativeMo
2c220 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 2c 0d  dule.xRollback,.
2c230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c240 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2c250 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69  dule.xFindFuncti
2c260 6f 6e 2c 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65  on, nativeModule
2c270 2e 78 52 65 6e 61 6d 65 2c 0d 0a 20 20 20 20 20  .xRename,..     
2c280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c290 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2c2a0 53 61 76 65 70 6f 69 6e 74 2c 20 6e 61 74 69 76  Savepoint, nativ
2c2b0 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
2c2c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c2d0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c2e0 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2c2f0 54 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  To, IntPtr.Zero,
2c300 20 64 65 73 74 72 6f 79 4d 6f 64 75 6c 65 29 3b   destroyModule);
2c310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c320 20 20 20 20 72 65 74 75 72 6e 20 28 64 69 73 70      return (disp
2c330 6f 73 61 62 6c 65 4d 6f 64 75 6c 65 20 21 3d 20  osableModule != 
2c340 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 23  IntPtr.Zero);..#
2c350 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2c360 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2c370 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
2c380 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e 64  ception();..#end
2c390 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
2c3a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
2c3b0 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
2c3c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c3d0 20 20 20 20 20 20 20 69 66 20 28 70 4e 61 6d 65         if (pName
2c3e0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
2c3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c400 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c410 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
2c420 65 6d 6f 72 79 2e 46 72 65 65 28 70 4e 61 6d 65  emory.Free(pName
2c430 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2c440 20 20 20 20 20 20 20 20 70 4e 61 6d 65 20 3d 20          pName = 
2c450 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20  IntPtr.Zero;..  
2c460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2c470 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c480 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c490 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2c4a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
2c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
2c500 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
2c510 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ods..        ///
2c520 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2c530 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
2c540 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 62 79  hod is called by
2c550 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
2c560 20 6c 69 62 72 61 72 79 20 77 68 65 6e 20 74 68   library when th
2c570 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  e native..      
2c580 20 20 2f 2f 2f 20 6d 6f 64 75 6c 65 20 61 73 73    /// module ass
2c590 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
2c5a0 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
2c5b0 65 20 69 73 20 62 65 69 6e 67 20 64 65 73 74 72  e is being destr
2c5c0 6f 79 65 64 20 64 75 65 0d 0a 20 20 20 20 20 20  oyed due..      
2c5d0 20 20 2f 2f 2f 20 74 6f 20 69 74 73 20 70 61 72    /// to its par
2c5e0 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ent connection b
2c5f0 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 20 49 74  eing closed.  It
2c600 20 6d 61 79 20 61 6c 73 6f 20 62 65 20 63 61 6c   may also be cal
2c610 6c 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20  led by..        
2c620 2f 2f 2f 20 74 68 65 20 22 76 74 73 68 69 6d 22  /// the "vtshim"
2c630 20 6d 6f 64 75 6c 65 20 69 66 2f 77 68 65 6e 20   module if/when 
2c640 74 68 65 20 73 71 6c 69 74 65 33 5f 64 69 73 70  the sqlite3_disp
2c650 6f 73 65 5f 6d 6f 64 75 6c 65 28 29 20 66 75 6e  ose_module() fun
2c660 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f  ction..        /
2c670 2f 2f 20 69 73 20 63 61 6c 6c 65 64 2e 0d 0a 20  // is called... 
2c680 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2c690 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2c6a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2c6b0 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
2c6c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
2c6d0 61 74 69 76 65 20 75 73 65 72 2d 64 61 74 61 20  ative user-data 
2c6e0 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69 61 74  pointer associat
2c6f0 65 64 20 77 69 74 68 20 74 68 69 73 20 6d 6f 64  ed with this mod
2c700 75 6c 65 2c 20 61 73 20 69 74 20 77 61 73 0d 0a  ule, as it was..
2c710 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 6f 76          /// prov
2c720 69 64 65 64 20 74 6f 20 74 68 65 20 53 51 4c 69  ided to the SQLi
2c730 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
2c740 77 68 65 6e 20 74 68 65 20 6e 61 74 69 76 65 20  when the native 
2c750 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e 63 65 0d  module instance.
2c760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 61 73  .        /// was
2c770 20 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20   created...     
2c780 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2c790 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2c7a0 20 76 6f 69 64 20 78 44 65 73 74 72 6f 79 4d 6f   void xDestroyMo
2c7b0 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  dule(..         
2c7c0 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e     IntPtr pClien
2c7d0 74 44 61 74 61 20 2f 2a 20 4e 4f 54 20 55 53 45  tData /* NOT USE
2c7e0 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
2c7f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
2c800 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c810 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2c820 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69  OTE: At this poi
2c830 6e 74 2c 20 6a 75 73 74 20 6d 61 6b 65 20 73 75  nt, just make su
2c840 72 65 20 74 68 61 74 20 74 68 69 73 20 6e 61 74  re that this nat
2c850 69 76 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20  ive module..    
2c860 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2c870 20 68 61 6e 64 6c 65 20 69 73 20 6e 6f 74 20 72   handle is not r
2c880 65 75 73 65 64 2c 20 6e 6f 72 20 70 61 73 73 65  eused, nor passe
2c890 64 20 69 6e 74 6f 20 74 68 65 20 6e 61 74 69 76  d into the nativ
2c8a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  e..            /
2c8b0 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f  /       sqlite3_
2c8c0 64 69 73 70 6f 73 65 5f 6d 6f 64 75 6c 65 28 29  dispose_module()
2c8d0 20 66 75 6e 63 74 69 6f 6e 20 6c 61 74 65 72 20   function later 
2c8e0 28 69 2e 65 2e 20 69 66 2f 77 68 65 6e 0d 0a 20  (i.e. if/when.. 
2c8f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2c900 20 20 20 20 74 68 65 20 44 69 73 70 6f 73 65 28      the Dispose(
2c910 29 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 69 73  ) method of this
2c920 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2c930 20 69 73 20 63 61 6c 6c 65 64 29 2e 0d 0a 20 20   is called)...  
2c940 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2c950 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
2c960 61 62 6c 65 4d 6f 64 75 6c 65 20 3d 20 49 6e 74  ableModule = Int
2c970 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2c980 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2c990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c9d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2c9e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c9f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 72  ..        /// Cr
2ca00 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
2ca10 73 20 74 68 65 20 6e 61 74 69 76 65 20 73 71 6c  s the native sql
2ca20 69 74 65 5f 6d 6f 64 75 6c 65 20 73 74 72 75 63  ite_module struc
2ca30 74 75 72 65 20 75 73 69 6e 67 20 74 68 65 0d 0a  ture using the..
2ca40 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66          /// conf
2ca50 69 67 75 72 65 64 20 28 6f 72 20 64 65 66 61 75  igured (or defau
2ca60 6c 74 29 20 3c 73 65 65 20 63 72 65 66 3d 22 49  lt) <see cref="I
2ca70 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2ca80 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20  le" />..        
2ca90 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 20 69 6d  /// interface im
2caa0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a 20  plementation... 
2cab0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2cac0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
2cad0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2cae0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
2caf0 74 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75  tive sqlite_modu
2cb00 6c 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69  le structure usi
2cb10 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65  ng the configure
2cb20 64 20 28 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  d (or..        /
2cb30 2f 2f 20 64 65 66 61 75 6c 74 29 20 3c 73 65 65  // default) <see
2cb40 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
2cb50 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
2cb60 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20 20  nterface..      
2cb70 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61    /// implementa
2cb80 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
2cb90 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2cba0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 55         private U
2cbb0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2cbc0 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  ds.sqlite3_modul
2cbd0 65 20 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65  e AllocateNative
2cbe0 4d 6f 64 75 6c 65 28 29 0d 0a 20 20 20 20 20 20  Module()..      
2cbf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2cc00 20 72 65 74 75 72 6e 20 41 6c 6c 6f 63 61 74 65   return Allocate
2cc10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 47 65 74  NativeModule(Get
2cc20 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6d 70 6c  NativeModuleImpl
2cc30 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ());..        }.
2cc40 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2cc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc90 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f  //....#if PLATFO
2cca0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2ccb0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ORK..        ///
2ccc0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2ccd0 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
2cce0 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6d 65  and returns a me
2ccf0 6d 6f 72 79 20 62 6c 6f 63 6b 20 6f 62 74 61 69  mory block obtai
2cd00 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 53 51 4c  ned from the SQL
2cd10 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20 20 20  ite core..      
2cd20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 20 75 73    /// library us
2cd30 65 64 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20  ed to store the 
2cd40 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 6d  native sqlite3_m
2cd50 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2cd60 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20 20 20  for this..      
2cd70 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73    /// object ins
2cd80 74 61 6e 63 65 20 77 68 65 6e 20 72 75 6e 6e 69  tance when runni
2cd90 6e 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43  ng on the .NET C
2cda0 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
2cdb0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2cdc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2cdd0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2cde0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2cdf0 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
2ce00 20 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 73   to the native s
2ce10 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 73 74  qlite3_module st
2ce20 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
2ce30 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2ce40 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2ce50 65 20 49 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74  e IntPtr Allocat
2ce60 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 49 6e 74  eNativeModuleInt
2ce70 65 72 6f 70 28 29 0d 0a 20 20 20 20 20 20 20 20  erop()..        
2ce80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
2ce90 66 20 28 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65  f (pNativeModule
2cea0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
2ceb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2cec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ced0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2cee0 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4e 6f       // HACK: No
2cef0 20 65 61 73 79 20 77 61 79 20 74 6f 20 64 65 74   easy way to det
2cf00 65 72 6d 69 6e 65 20 74 68 65 20 73 69 7a 65 20  ermine the size 
2cf10 6f 66 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  of the native.. 
2cf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2cf30 2f 20 20 20 20 20 20 20 73 71 6c 69 74 65 5f 6d  /       sqlite_m
2cf40 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65 20  odule structure 
2cf50 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
2cf60 74 68 65 20 2e 4e 45 54 0d 0a 20 20 20 20 20 20  the .NET..      
2cf70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2cf80 20 20 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65     Compact Frame
2cf90 77 6f 72 6b 3b 20 74 68 65 72 65 66 6f 72 65 2c  work; therefore,
2cfa0 20 6a 75 73 74 20 62 61 73 65 20 74 68 65 20 73   just base the s
2cfb0 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ize..           
2cfc0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e       //       on
2cfd0 20 77 68 61 74 20 77 65 20 6b 6e 6f 77 3a 0d 0a   what we know:..
2cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cff0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2d000 20 20 20 20 2f 2f 20 20 20 20 20 20 20 54 68 65      //       The
2d010 72 65 20 69 73 20 6f 6e 65 20 69 6e 74 65 67 65  re is one intege
2d020 72 20 6d 65 6d 62 65 72 2e 0d 0a 20 20 20 20 20  r member...     
2d030 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2d040 20 20 20 20 54 68 65 72 65 20 61 72 65 20 32 32      There are 22
2d050 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65   function pointe
2d060 72 20 6d 65 6d 62 65 72 73 2e 0d 0a 20 20 20 20  r members...    
2d070 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d090 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20  pNativeModule = 
2d0a0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c  SQLiteMemory.All
2d0b0 6f 63 61 74 65 28 32 33 20 2a 20 49 6e 74 50 74  ocate(23 * IntPt
2d0c0 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a 20 20 20 20  r.Size);....    
2d0d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2d0e0 70 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 3d  pNativeModule ==
2d0f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
2d100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d110 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 75 74     throw new Out
2d120 4f 66 4d 65 6d 6f 72 79 45 78 63 65 70 74 69 6f  OfMemoryExceptio
2d130 6e 28 22 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c  n("sqlite3_modul
2d140 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e");..          
2d150 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2d160 20 20 20 72 65 74 75 72 6e 20 70 4e 61 74 69 76     return pNativ
2d170 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20  eModule;..      
2d180 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
2d190 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d1e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2d1f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2d200 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64   /// Creates and
2d210 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74   returns the nat
2d220 69 76 65 20 73 71 6c 69 74 65 5f 6d 6f 64 75 6c  ive sqlite_modul
2d230 65 20 73 74 72 75 63 74 75 72 65 20 75 73 69 6e  e structure usin
2d240 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
2d250 2f 2f 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  // specified <se
2d260 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
2d270 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  ativeModule" /> 
2d280 69 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 20  interface..     
2d290 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
2d2a0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
2d2b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2d2c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2d2d0 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
2d2e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2d2f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2d300 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d310 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20  e" /> interface 
2d320 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74  implementation t
2d330 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  o..        /// u
2d340 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
2d350 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2d360 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2d370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2d380 65 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 5f  e native sqlite_
2d390 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
2d3a0 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
2d3b0 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  fied..        //
2d3c0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
2d3d0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2d3e0 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20 69  " /> interface i
2d3f0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a  mplementation...
2d400 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2d410 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2d420 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61  private UnsafeNa
2d430 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2d440 74 65 33 5f 6d 6f 64 75 6c 65 20 41 6c 6c 6f 63  te3_module Alloc
2d450 61 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28  ateNativeModule(
2d460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53  ..            IS
2d470 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d480 65 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20  e module..      
2d490 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2d4a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d4b0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e  nativeModule = n
2d4c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d4d0 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d  ethods.sqlite3_m
2d4e0 6f 64 75 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20  odule();..      
2d4f0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d500 6c 65 2e 69 56 65 72 73 69 6f 6e 20 3d 20 44 65  le.iVersion = De
2d510 66 61 75 6c 74 4d 6f 64 75 6c 65 56 65 72 73 69  faultModuleVersi
2d520 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  on;....         
2d530 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20 21 3d     if (module !=
2d540 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2d550 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d560 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2d570 75 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65  ule.xCreate = ne
2d580 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d590 74 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a  thods.xCreate(..
2d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5b0 20 20 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74     module.xCreat
2d5c0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
2d5d0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2d5e0 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e  ule.xConnect = n
2d5f0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d600 65 74 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28  ethods.xConnect(
2d610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d620 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f        module.xCo
2d630 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
2d640 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d650 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64  eModule.xBestInd
2d660 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  ex = new UnsafeN
2d670 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65  ativeMethods.xBe
2d680 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20  stIndex(..      
2d690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2d6a0 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 29  dule.xBestIndex)
2d6b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d6c0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2d6d0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20  e.xDisconnect = 
2d6e0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2d6f0 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e  Methods.xDisconn
2d700 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
2d710 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2d720 2e 78 44 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a  .xDisconnect);..
2d730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d740 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2d750 44 65 73 74 72 6f 79 20 3d 20 6e 65 77 20 55 6e  Destroy = new Un
2d760 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d770 73 2e 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  s.xDestroy(..   
2d780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d790 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79   module.xDestroy
2d7a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d7b0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2d7c0 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55  le.xOpen = new U
2d7d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2d7e0 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  ds.xOpen(..     
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2d800 6f 64 75 6c 65 2e 78 4f 70 65 6e 29 3b 0d 0a 0d  odule.xOpen);...
2d810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d820 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2d830 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66  lose = new Unsaf
2d840 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2d850 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
2d860 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d870 6c 65 2e 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a 20  le.xClose);.... 
2d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2d890 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c  ativeModule.xFil
2d8a0 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ter = new Unsafe
2d8b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2d8c0 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
2d8d0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2d8e0 6c 65 2e 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a  le.xFilter);....
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 4e 65  nativeModule.xNe
2d910 78 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  xt = new UnsafeN
2d920 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65  ativeMethods.xNe
2d930 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt(..           
2d940 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2d950 78 4e 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  xNext);....     
2d960 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2d970 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e  eModule.xEof = n
2d980 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2d990 65 74 68 6f 64 73 2e 78 45 6f 66 28 6d 6f 64 75  ethods.xEof(modu
2d9a0 6c 65 2e 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20 20  le.xEof);....   
2d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2d9c0 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d  iveModule.xColum
2d9d0 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  n = new UnsafeNa
2d9e0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6c  tiveMethods.xCol
2d9f0 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  umn(..          
2da00 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2da10 2e 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20  .xColumn);....  
2da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2da30 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
2da40 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  d = new UnsafeNa
2da50 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77  tiveMethods.xRow
2da60 49 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id(..           
2da70 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2da80 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20  xRowId);....    
2da90 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2daa0 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2dab0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2dac0 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61  iveMethods.xUpda
2dad0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
2dae0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2daf0 78 55 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20  xUpdate);....   
2db00 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2db10 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e  iveModule.xBegin
2db20 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2db30 69 76 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69  iveMethods.xBegi
2db40 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
2db50 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2db60 42 65 67 69 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  Begin);....     
2db70 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2db80 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20  eModule.xSync = 
2db90 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2dba0 4d 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a  Methods.xSync(..
2dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbc0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 79 6e 63      module.xSync
2dbd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2dbe0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2dbf0 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77  le.xCommit = new
2dc00 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2dc10 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20  hods.xCommit(.. 
2dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc30 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69     module.xCommi
2dc40 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
2dc50 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2dc60 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20  ule.xRollback = 
2dc70 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2dc80 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63  Methods.xRollbac
2dc90 6b 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k(..            
2dca0 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78          module.x
2dcb0 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20  Rollback);....  
2dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2dcd0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64  tiveModule.xFind
2dce0 46 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55  Function = new U
2dcf0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2dd00 64 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e  ds.xFindFunction
2dd10 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2dd20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46         module.xF
2dd30 69 6e 64 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d  indFunction);...
2dd40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dd50 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52   nativeModule.xR
2dd60 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61  ename = new Unsa
2dd70 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2dd80 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20  xRename(..      
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2dda0 64 75 6c 65 2e 78 52 65 6e 61 6d 65 29 3b 0d 0a  dule.xRename);..
2ddb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ddc0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2ddd0 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20  Savepoint = 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 53 61 76 65 70 6f 69 6e 74 28 0d  ods.xSavepoint(.
2de00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de10 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 53 61 76       module.xSav
2de20 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  epoint);....    
2de30 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2de40 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73  veModule.xReleas
2de50 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  e = new UnsafeNa
2de60 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c  tiveMethods.xRel
2de70 65 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  ease(..         
2de80 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
2de90 65 2e 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a  e.xRelease);....
2dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2deb0 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2dec0 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65 77 20 55  llbackTo = new U
2ded0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2dee0 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 0d  ds.xRollbackTo(.
2def0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2df00 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c       module.xRol
2df10 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20 20  lbackTo);..     
2df20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2df30 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
2df40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2df50 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2df60 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 20  eModule.xCreate 
2df70 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2df80 76 65 4d 65 74 68 6f 64 73 2e 78 43 72 65 61 74  veMethods.xCreat
2df90 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2dfa0 20 20 20 20 20 20 20 20 78 43 72 65 61 74 65 29          xCreate)
2dfb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2dfc0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2dfd0 65 2e 78 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77  e.xConnect = new
2dfe0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2dff0 68 6f 64 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a  hods.xConnect(..
2e000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e010 20 20 20 20 78 43 6f 6e 6e 65 63 74 29 3b 0d 0a      xConnect);..
2e020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e030 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e040 42 65 73 74 49 6e 64 65 78 20 3d 20 6e 65 77 20  BestIndex = new 
2e050 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e060 6f 64 73 2e 78 42 65 73 74 49 6e 64 65 78 28 0d  ods.xBestIndex(.
2e070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e080 20 20 20 20 20 78 42 65 73 74 49 6e 64 65 78 29       xBestIndex)
2e090 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e0a0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e0b0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 3d 20  e.xDisconnect = 
2e0c0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2e0d0 4d 65 74 68 6f 64 73 2e 78 44 69 73 63 6f 6e 6e  Methods.xDisconn
2e0e0 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
2e0f0 20 20 20 20 20 20 20 20 20 20 78 44 69 73 63 6f            xDisco
2e100 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  nnect);....     
2e110 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e120 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79  eModule.xDestroy
2e130 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e140 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65 73 74  iveMethods.xDest
2e150 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  roy(..          
2e160 20 20 20 20 20 20 20 20 20 20 78 44 65 73 74 72            xDestr
2e170 6f 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  oy);....        
2e180 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e190 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2e1a0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e1b0 68 6f 64 73 2e 78 4f 70 65 6e 28 78 4f 70 65 6e  hods.xOpen(xOpen
2e1c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2e1d0 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65      nativeModule
2e1e0 2e 78 43 6c 6f 73 65 20 3d 20 6e 65 77 20 55 6e  .xClose = new Un
2e1f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2e200 73 2e 78 43 6c 6f 73 65 28 78 43 6c 6f 73 65 29  s.xClose(xClose)
2e210 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e220 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2e230 65 2e 78 46 69 6c 74 65 72 20 3d 20 6e 65 77 20  e.xFilter = new 
2e240 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2e250 6f 64 73 2e 78 46 69 6c 74 65 72 28 0d 0a 20 20  ods.xFilter(..  
2e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e270 20 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20    xFilter);.... 
2e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2e290 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78  ativeModule.xNex
2e2a0 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  t = new UnsafeNa
2e2b0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4e 65 78  tiveMethods.xNex
2e2c0 74 28 78 4e 65 78 74 29 3b 0d 0a 20 20 20 20 20  t(xNext);..     
2e2d0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e2e0 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e  eModule.xEof = n
2e2f0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e300 65 74 68 6f 64 73 2e 78 45 6f 66 28 78 45 6f 66  ethods.xEof(xEof
2e310 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e320 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2e330 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65 77  le.xColumn = new
2e340 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2e350 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a 20  hods.xColumn(.. 
2e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e370 20 20 20 78 43 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a     xColumn);....
2e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e390 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  nativeModule.xRo
2e3a0 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  wId = new Unsafe
2e3b0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2e3c0 6f 77 49 64 28 78 52 6f 77 49 64 29 3b 0d 0a 0d  owId(xRowId);...
2e3d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e3e0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55   nativeModule.xU
2e3f0 70 64 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  pdate = new Unsa
2e400 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2e410 78 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20  xUpdate(..      
2e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 55                xU
2e430 70 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  pdate);....     
2e440 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e450 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d  eModule.xBegin =
2e460 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2e470 65 4d 65 74 68 6f 64 73 2e 78 42 65 67 69 6e 28  eMethods.xBegin(
2e480 78 42 65 67 69 6e 29 3b 0d 0a 20 20 20 20 20 20  xBegin);..      
2e490 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2e4a0 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e  Module.xSync = n
2e4b0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e4c0 65 74 68 6f 64 73 2e 78 53 79 6e 63 28 78 53 79  ethods.xSync(xSy
2e4d0 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nc);....        
2e4e0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e4f0 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d 20 6e  dule.xCommit = n
2e500 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e510 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74 28 0d  ethods.xCommit(.
2e520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e530 20 20 20 20 20 78 43 6f 6d 6d 69 74 29 3b 0d 0a       xCommit);..
2e540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e550 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e560 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55  Rollback = new U
2e570 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2e580 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  ds.xRollback(.. 
2e590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5a0 20 20 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a     xRollback);..
2e5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e5c0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2e5d0 46 69 6e 64 46 75 6e 63 74 69 6f 6e 20 3d 20 6e  FindFunction = n
2e5e0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2e5f0 65 74 68 6f 64 73 2e 78 46 69 6e 64 46 75 6e 63  ethods.xFindFunc
2e600 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
2e610 20 20 20 20 20 20 20 20 20 20 20 78 46 69 6e 64             xFind
2e620 46 75 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20  Function);....  
2e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
2e640 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
2e650 6d 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  me = new UnsafeN
2e660 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65  ativeMethods.xRe
2e670 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  name(..         
2e680 20 20 20 20 20 20 20 20 20 20 20 78 52 65 6e 61             xRena
2e690 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
2e6a0 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e6b0 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20  dule.xSavepoint 
2e6c0 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2e6d0 76 65 4d 65 74 68 6f 64 73 2e 78 53 61 76 65 70  veMethods.xSavep
2e6e0 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20  oint(..         
2e6f0 20 20 20 20 20 20 20 20 20 20 20 78 53 61 76 65             xSave
2e700 70 6f 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  point);....     
2e710 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2e720 65 4d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65  eModule.xRelease
2e730 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e740 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65  iveMethods.xRele
2e750 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ase(..          
2e760 20 20 20 20 20 20 20 20 20 20 78 52 65 6c 65 61            xRelea
2e770 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  se);....        
2e780 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2e790 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f  dule.xRollbackTo
2e7a0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2e7b0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c 6c  iveMethods.xRoll
2e7c0 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
2e7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52 6f               xRo
2e7e0 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 20 20 20 20  llbackTo);..    
2e7f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2e800 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e810 6e 61 74 69 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20  nativeModule;.. 
2e820 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e830 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2e840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2e880 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2e890 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2e8a0 2f 20 43 72 65 61 74 65 73 20 61 20 63 6f 70 79  / Creates a copy
2e8b0 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
2e8c0 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
2e8d0 73 65 65 20 63 72 65 66 3d 22 55 6e 73 61 66 65  see cref="Unsafe
2e8e0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2e8f0 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e  lite3_module" />
2e900 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2e910 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75  ,..        /// u
2e920 73 69 6e 67 20 64 65 66 61 75 6c 74 20 69 6d 70  sing default imp
2e930 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72  lementations for
2e940 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 20 64   the contained d
2e950 65 6c 65 67 61 74 65 73 20 77 68 65 6e 0d 0a 20  elegates when.. 
2e960 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 63 65 73         /// neces
2e970 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sary...        /
2e980 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2e990 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e9a0 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e  m name="module">
2e9b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2e9c0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55 6e 73  e <see cref="Uns
2e9d0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2e9e0 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 22  .sqlite3_module"
2e9f0 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
2ea00 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
2ea10 20 74 6f 20 63 6f 70 79 2e 0d 0a 20 20 20 20 20   to copy...     
2ea20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ea30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
2ea40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2ea50 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65  /// The new <see
2ea60 20 63 72 65 66 3d 22 55 6e 73 61 66 65 4e 61 74   cref="UnsafeNat
2ea70 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2ea80 65 33 5f 6d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  e3_module" /> ob
2ea90 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
2eaa0 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  / instance...   
2eab0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
2eac0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ns>..        pri
2ead0 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74 69 76  vate UnsafeNativ
2eae0 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
2eaf0 5f 6d 6f 64 75 6c 65 20 43 6f 70 79 4e 61 74 69  _module CopyNati
2eb00 76 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20  veModule(..     
2eb10 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
2eb20 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2eb30 65 33 5f 6d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  e3_module module
2eb40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2eb50 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2eb60 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
2eb70 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
2eb80 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 65 77 4d 6f  te3_module newMo
2eb90 64 75 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  dule =..        
2eba0 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61          new Unsa
2ebb0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ebc0 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 28 29  sqlite3_module()
2ebd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ebe0 20 6e 65 77 4d 6f 64 75 6c 65 2e 69 56 65 72 73   newModule.iVers
2ebf0 69 6f 6e 20 3d 20 6d 6f 64 75 6c 65 2e 69 56 65  ion = module.iVe
2ec00 72 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  rsion;....      
2ec10 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2ec20 78 43 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e  xCreate = new Un
2ec30 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2ec40 73 2e 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  s.xCreate(..    
2ec50 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64              (mod
2ec60 75 6c 65 2e 78 43 72 65 61 74 65 20 21 3d 20 6e  ule.xCreate != n
2ec70 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43  ull) ? module.xC
2ec80 72 65 61 74 65 20 3a 20 78 43 72 65 61 74 65 29  reate : xCreate)
2ec90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2eca0 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e   newModule.xConn
2ecb0 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ect = new Unsafe
2ecc0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43  NativeMethods.xC
2ecd0 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2ece0 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2ecf0 2e 78 43 6f 6e 6e 65 63 74 20 21 3d 20 6e 75 6c  .xConnect != nul
2ed00 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e  l) ? module.xCon
2ed10 6e 65 63 74 20 3a 20 78 43 6f 6e 6e 65 63 74 29  nect : xConnect)
2ed20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ed30 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 42 65 73 74   newModule.xBest
2ed40 49 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61  Index = new Unsa
2ed50 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ed60 78 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20  xBestIndex(..   
2ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2ed80 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20  dule.xBestIndex 
2ed90 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2eda0 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3a 20 78  e.xBestIndex : x
2edb0 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a 20  BestIndex);.... 
2edc0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2edd0 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74  dule.xDisconnect
2ede0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2edf0 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 69 73 63  iveMethods.xDisc
2ee00 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
2ee10 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2ee20 2e 78 44 69 73 63 6f 6e 6e 65 63 74 20 21 3d 20  .xDisconnect != 
2ee30 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2ee40 44 69 73 63 6f 6e 6e 65 63 74 20 3a 0d 0a 20 20  Disconnect :..  
2ee50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 44                xD
2ee60 69 73 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20  isconnect);.... 
2ee70 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2ee80 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20  dule.xDestroy = 
2ee90 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2eea0 4d 65 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79  Methods.xDestroy
2eeb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2eec0 20 20 20 28 6d 6f 64 75 6c 65 2e 78 44 65 73 74     (module.xDest
2eed0 72 6f 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  roy != null) ? m
2eee0 6f 64 75 6c 65 2e 78 44 65 73 74 72 6f 79 20 3a  odule.xDestroy :
2eef0 20 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d 0a 20   xDestroy);.... 
2ef00 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2ef10 64 75 6c 65 2e 78 4f 70 65 6e 20 3d 20 6e 65 77  dule.xOpen = new
2ef20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2ef30 68 6f 64 73 2e 78 4f 70 65 6e 28 0d 0a 20 20 20  hods.xOpen(..   
2ef40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2ef50 64 75 6c 65 2e 78 4f 70 65 6e 20 21 3d 20 6e 75  dule.xOpen != nu
2ef60 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 4f 70  ll) ? module.xOp
2ef70 65 6e 20 3a 20 78 4f 70 65 6e 29 3b 0d 0a 0d 0a  en : xOpen);....
2ef80 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2ef90 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 3d 20 6e  odule.xClose = n
2efa0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2efb0 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 28 0d 0a  ethods.xClose(..
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efd0 28 6d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20 21  (module.xClose !
2efe0 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65  = null) ? module
2eff0 2e 78 43 6c 6f 73 65 20 3a 20 78 43 6c 6f 73 65  .xClose : xClose
2f000 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f010 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 46 69 6c    newModule.xFil
2f020 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ter = new Unsafe
2f030 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2f040 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20  ilter(..        
2f050 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65 2e          (module.
2f060 78 46 69 6c 74 65 72 20 21 3d 20 6e 75 6c 6c 29  xFilter != null)
2f070 20 3f 20 6d 6f 64 75 6c 65 2e 78 46 69 6c 74 65   ? module.xFilte
2f080 72 20 3a 20 78 46 69 6c 74 65 72 29 3b 0d 0a 0d  r : xFilter);...
2f090 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f0a0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e  Module.xNext = n
2f0b0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f0c0 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a 20  ethods.xNext(.. 
2f0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f0e0 6d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 21 3d 20  module.xNext != 
2f0f0 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f100 4e 65 78 74 20 3a 20 78 4e 65 78 74 29 3b 0d 0a  Next : xNext);..
2f110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
2f120 77 4d 6f 64 75 6c 65 2e 78 45 6f 66 20 3d 20 6e  wModule.xEof = n
2f130 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f140 65 74 68 6f 64 73 2e 78 45 6f 66 28 0d 0a 20 20  ethods.xEof(..  
2f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f160 6f 64 75 6c 65 2e 78 45 6f 66 20 21 3d 20 6e 75  odule.xEof != nu
2f170 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 45 6f  ll) ? module.xEo
2f180 66 20 3a 20 78 45 6f 66 29 3b 0d 0a 0d 0a 20 20  f : xEof);....  
2f190 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64            newMod
2f1a0 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e 65  ule.xColumn = ne
2f1b0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f1c0 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d 0a  thods.xColumn(..
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1e0 28 6d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20  (module.xColumn 
2f1f0 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c  != null) ? modul
2f200 65 2e 78 43 6f 6c 75 6d 6e 20 3a 20 78 43 6f 6c  e.xColumn : xCol
2f210 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  umn);....       
2f220 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78       newModule.x
2f230 52 6f 77 49 64 20 3d 20 6e 65 77 20 55 6e 73 61  RowId = new Unsa
2f240 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2f250 78 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20  xRowId(..       
2f260 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c 65           (module
2f270 2e 78 52 6f 77 49 64 20 21 3d 20 6e 75 6c 6c 29  .xRowId != null)
2f280 20 3f 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49 64   ? module.xRowId
2f290 20 3a 20 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20   : xRowId);.... 
2f2a0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d 6f             newMo
2f2b0 64 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e  dule.xUpdate = n
2f2c0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2f2d0 65 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d  ethods.xUpdate(.
2f2e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2f0 20 28 6d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65   (module.xUpdate
2f300 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f310 6c 65 2e 78 55 70 64 61 74 65 20 3a 20 78 55 70  le.xUpdate : xUp
2f320 64 61 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  date);....      
2f330 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65 2e        newModule.
2f340 78 42 65 67 69 6e 20 3d 20 6e 65 77 20 55 6e 73  xBegin = new Uns
2f350 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f360 2e 78 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20  .xBegin(..      
2f370 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2f380 65 2e 78 42 65 67 69 6e 20 21 3d 20 6e 75 6c 6c  e.xBegin != null
2f390 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69  ) ? module.xBegi
2f3a0 6e 20 3a 20 78 42 65 67 69 6e 29 3b 0d 0a 0d 0a  n : xBegin);....
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f3c0 6f 64 75 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65  odule.xSync = ne
2f3d0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f3e0 74 68 6f 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20  thods.xSync(..  
2f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f400 6f 64 75 6c 65 2e 78 53 79 6e 63 20 21 3d 20 6e  odule.xSync != n
2f410 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78 53  ull) ? module.xS
2f420 79 6e 63 20 3a 20 78 53 79 6e 63 29 3b 0d 0a 0d  ync : xSync);...
2f430 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f440 4d 6f 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3d  Module.xCommit =
2f450 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f460 65 4d 65 74 68 6f 64 73 2e 78 43 6f 6d 6d 69 74  eMethods.xCommit
2f470 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2f480 20 20 20 28 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d     (module.xComm
2f490 69 74 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f  it != null) ? mo
2f4a0 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 20 3a 20 78  dule.xCommit : x
2f4b0 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20 20  Commit);....    
2f4c0 20 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c          newModul
2f4d0 65 2e 78 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65  e.xRollback = ne
2f4e0 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2f4f0 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28  thods.xRollback(
2f500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f510 20 20 28 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62    (module.xRollb
2f520 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d  ack != null) ? m
2f530 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 20  odule.xRollback 
2f540 3a 20 78 52 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  : xRollback);...
2f550 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
2f560 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  Module.xFindFunc
2f570 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66  tion = new Unsaf
2f580 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2f590 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20  FindFunction(.. 
2f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f5b0 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  module.xFindFunc
2f5c0 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  tion != null) ? 
2f5d0 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63  module.xFindFunc
2f5e0 74 69 6f 6e 20 3a 0d 0a 20 20 20 20 20 20 20 20  tion :..        
2f5f0 20 20 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e          xFindFun
2f600 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  ction);....     
2f610 20 20 20 20 20 20 20 6e 65 77 4d 6f 64 75 6c 65         newModule
2f620 2e 78 52 65 6e 61 6d 65 20 3d 20 6e 65 77 20 55  .xRename = new U
2f630 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2f640 64 73 2e 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20  ds.xRename(..   
2f650 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f               (mo
2f660 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 21 3d 20  dule.xRename != 
2f670 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e 78  null) ? module.x
2f680 52 65 6e 61 6d 65 20 3a 20 78 52 65 6e 61 6d 65  Rename : xRename
2f690 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f6a0 20 20 6e 65 77 4d 6f 64 75 6c 65 2e 78 53 61 76    newModule.xSav
2f6b0 65 70 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73  epoint = new Uns
2f6c0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
2f6d0 2e 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20  .xSavepoint(..  
2f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d                (m
2f6f0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2f700 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75   != null) ? modu
2f710 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74 20 3a 20  le.xSavepoint : 
2f720 78 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 0d 0a  xSavepoint);....
2f730 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f740 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d  odule.xRelease =
2f750 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2f760 65 4d 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73  eMethods.xReleas
2f770 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2f780 20 20 20 20 28 6d 6f 64 75 6c 65 2e 78 52 65 6c      (module.xRel
2f790 65 61 73 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20  ease != null) ? 
2f7a0 6d 6f 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 20  module.xRelease 
2f7b0 3a 20 78 52 65 6c 65 61 73 65 29 3b 0d 0a 0d 0a  : xRelease);....
2f7c0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4d              newM
2f7d0 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54  odule.xRollbackT
2f7e0 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61  o = new UnsafeNa
2f7f0 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 6f 6c  tiveMethods.xRol
2f800 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20  lbackTo(..      
2f810 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 75 6c            (modul
2f820 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 21 3d  e.xRollbackTo !=
2f830 20 6e 75 6c 6c 29 20 3f 20 6d 6f 64 75 6c 65 2e   null) ? module.
2f840 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3a 0d 0a 20  xRollbackTo :.. 
2f850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2f860 52 6f 6c 6c 62 61 63 6b 54 6f 29 3b 0d 0a 0d 0a  RollbackTo);....
2f870 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f880 72 6e 20 6e 65 77 4d 6f 64 75 6c 65 3b 0d 0a 20  rn newModule;.. 
2f890 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2f8a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f8f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2f900 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2f910 2f 20 43 61 6c 6c 73 20 6f 6e 65 20 6f 66 20 74  / Calls one of t
2f920 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
2f930 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20   initialization 
2f940 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
2f950 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2f960 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
2f970 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 65 61 74  aram name="creat
2f980 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
2f990 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 63 61 6c   Non-zero to cal
2f9a0 6c 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  l the <see cref=
2f9b0 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
2f9c0 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e  odule.Create" />
2f9d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
2f9e0 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  thod; otherwise,
2f9f0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
2fa00 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
2fa10 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e  dule.Connect" />
2fa20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65  ..        /// me
2fa30 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 6c  thod will be cal
2fa40 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  led...        //
2fa50 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2fa60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2fa70 61 6d 65 3d 22 70 44 62 22 3e 0d 0a 20 20 20 20  ame="pDb">..    
2fa80 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
2fa90 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ve database conn
2faa0 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d 0a  ection handle...
2fab0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2fac0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2fad0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2fae0 41 75 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  Aux">..        /
2faf0 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
2fb00 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 76  native pointer v
2fb10 61 6c 75 65 20 74 68 61 74 20 77 61 73 20 70 72  alue that was pr
2fb20 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20  ovided to the.. 
2fb30 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
2fb40 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65  e3_create_module
2fb50 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 72 65 61  (), sqlite3_crea
2fb60 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 20 6f  te_module_v2() o
2fb70 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  r..        /// s
2fb80 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 64 69  qlite3_create_di
2fb90 73 70 6f 73 61 62 6c 65 5f 6d 6f 64 75 6c 65 28  sposable_module(
2fba0 29 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20  ) functions...  
2fbb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2fbc0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
2fbd0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
2fbe0 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  c">..        ///
2fbf0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61   The number of a
2fc00 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68  rguments from th
2fc10 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  e CREATE VIRTUAL
2fc20 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
2fc30 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2fc40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
2fc50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2fc60 3d 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20  ="argv">..      
2fc70 20 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20    /// The array 
2fc80 6f 66 20 73 74 72 69 6e 67 20 61 72 67 75 6d 65  of string argume
2fc90 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 43 52 45  nts from the CRE
2fca0 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
2fcb0 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  E..        /// s
2fcc0 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  tatement...     
2fcd0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2fce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2fcf0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
2fd00 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
2fd10 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 69  pon success, thi
2fd20 73 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74  s parameter must
2fd30 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
2fd40 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 6e 65 77  point to the new
2fd50 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
2fd60 63 72 65 61 74 65 64 20 6e 61 74 69 76 65 20 73  created native s
2fd70 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
2fd80 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
2fd90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
2fda0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
2fdb0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
2fdc0 45 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  Error">..       
2fdd0 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72   /// Upon failur
2fde0 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  e, this paramete
2fdf0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
2fe00 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
2fe10 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  he error..      
2fe20 20 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2c 20 77    /// message, w
2fe30 69 74 68 20 74 68 65 20 75 6e 64 65 72 6c 79 69  ith the underlyi
2fe40 6e 67 20 6d 65 6d 6f 72 79 20 68 61 76 69 6e 67  ng memory having
2fe50 20 62 65 65 6e 20 6f 62 74 61 69 6e 65 64 20 66   been obtained f
2fe60 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
2fe70 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 61 6c   /// sqlite3_mal
2fe80 6c 6f 63 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0d  loc() function..
2fe90 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2fea0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2feb0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2fec0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
2fed0 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
2fee0 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
2fef0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2ff00 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
2ff10 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
2ff20 65 20 43 72 65 61 74 65 4f 72 43 6f 6e 6e 65 63  e CreateOrConnec
2ff30 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
2ff40 62 6f 6f 6c 20 63 72 65 61 74 65 2c 0d 0a 20 20  bool create,..  
2ff50 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
2ff60 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20   pDb,..         
2ff70 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
2ff80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
2ff90 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
2ffa0 20 20 20 20 49 6e 74 50 74 72 20 61 72 67 76 2c      IntPtr argv,
2ffb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2ffc0 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
2ffd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
2ffe0 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
2fff0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
30000 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30010 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30030 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
30040 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51 4c 69   fileName = SQLi
30050 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46  teString.StringF
30060 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a  romUtf8IntPtr(..
30070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30080 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
30090 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
300a0 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44 62 2c  db_filename(pDb,
300b0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 3b 0d   IntPtr.Zero));.
300c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
300d0 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65     using (SQLite
300e0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
300f0 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69  ction = new SQLi
30100 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20  teConnection(.. 
30110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30120 20 20 20 20 20 20 20 70 44 62 2c 20 66 69 6c 65         pDb, file
30130 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d 0a 20  Name, false)).. 
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30160 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
30170 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d  ualTable table =
30180 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
30190 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
301a0 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b  ng error = null;
301b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
301c0 20 20 20 20 20 20 20 20 69 66 20 28 28 63 72 65          if ((cre
301d0 61 74 65 20 26 26 20 43 72 65 61 74 65 28 63 6f  ate && Create(co
301e0 6e 6e 65 63 74 69 6f 6e 2c 20 70 41 75 78 2c 0d  nnection, pAux,.
301f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30200 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
30210 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67  iteString.String
30220 41 72 72 61 79 46 72 6f 6d 55 74 66 38 53 69 7a  ArrayFromUtf8Siz
30230 65 41 6e 64 49 6e 74 50 74 72 28 61 72 67 63 2c  eAndIntPtr(argc,
30240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
30260 67 76 29 2c 20 72 65 66 20 74 61 62 6c 65 2c 20  gv), ref table, 
30270 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51  ref error) == SQ
30280 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30290 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
302a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 21                (!
302b0 63 72 65 61 74 65 20 26 26 20 43 6f 6e 6e 65 63  create && Connec
302c0 74 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 41  t(connection, pA
302d0 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ux,..           
302e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302f0 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
30300 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74 66  ringArrayFromUtf
30310 38 53 69 7a 65 41 6e 64 49 6e 74 50 74 72 28 61  8SizeAndIntPtr(a
30320 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
30330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30340 20 20 61 72 67 76 29 2c 20 72 65 66 20 74 61 62    argv), ref tab
30350 6c 65 2c 20 72 65 66 20 65 72 72 6f 72 29 20 3d  le, ref error) =
30360 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
30370 65 2e 4f 6b 29 29 0d 0a 20 20 20 20 20 20 20 20  e.Ok))..        
30380 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303a0 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
303b0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
303e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303f0 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 54    pVtab = TableT
30400 6f 49 6e 74 50 74 72 28 74 61 62 6c 65 29 3b 0d  oIntPtr(table);.
30410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
30430 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
30440 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
30450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30460 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30470 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
30480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30490 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
304a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304b0 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72 20           pError 
304c0 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
304d0 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
304e0 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
304f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30500 20 20 20 20 20 20 22 6e 6f 20 74 61 62 6c 65 20        "no table 
30510 77 61 73 20 63 72 65 61 74 65 64 22 29 3b 0d 0a  was created");..
30520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30530 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30560 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
30590 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72 6f             pErro
305a0 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
305b0 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
305c0 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20  tring(error);.. 
305d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
305f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30600 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30610 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
30620 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a  tion e) /* NOTE:
30630 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e   Must catch ALL.
30640 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
30650 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30660 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
30670 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
30680 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65  tPtrFromString(e
30690 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
306a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
306b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
306c0 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
306d0 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
306e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
306f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30730 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
30740 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
30750 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61  ..        /// Ca
30760 6c 6c 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 76  lls one of the v
30770 69 72 74 75 61 6c 20 74 61 62 6c 65 20 66 69 6e  irtual table fin
30780 61 6c 69 7a 61 74 69 6f 6e 20 6d 65 74 68 6f 64  alization method
30790 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
307a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
307b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
307c0 61 6d 65 3d 22 64 65 73 74 72 6f 79 22 3e 0d 0a  ame="destroy">..
307d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
307e0 7a 65 72 6f 20 74 6f 20 63 61 6c 6c 20 74 68 65  zero to call the
307f0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
30800 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
30810 2e 44 65 73 74 72 6f 79 22 20 2f 3e 0d 0a 20 20  .Destroy" />..  
30820 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
30830 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65  ; otherwise, the
30840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
30850 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
30860 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 69  ManagedModule.Di
30870 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74  sconnect" /> met
30880 68 6f 64 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  hod will be..   
30890 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 2e       /// called.
308a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
308b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
308c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
308d0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
308e0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
308f0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
30900 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
30910 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
30920 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
30930 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
30940 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
30950 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
30960 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
30970 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
30980 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
30990 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
309a0 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
309b0 65 20 44 65 73 74 72 6f 79 4f 72 44 69 73 63 6f  e DestroyOrDisco
309c0 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20  nnect(..        
309d0 20 20 20 20 62 6f 6f 6c 20 64 65 73 74 72 6f 79      bool destroy
309e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
309f0 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
30a00 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
30a10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30a20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30a30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30a40 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
30a50 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20  tualTable table 
30a60 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74  = TableFromIntPt
30a70 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30a90 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d  (table != null).
30aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30ab0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30ac0 20 20 20 20 20 20 20 20 69 66 20 28 28 64 65 73          if ((des
30ad0 74 72 6f 79 20 26 26 20 28 44 65 73 74 72 6f 79  troy && (Destroy
30ae0 28 74 61 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74  (table) == SQLit
30af0 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 29 20  eErrorCode.Ok)) 
30b00 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
30b10 20 20 20 20 20 20 20 20 20 20 20 20 28 21 64 65              (!de
30b20 73 74 72 6f 79 20 26 26 20 28 44 69 73 63 6f 6e  stroy && (Discon
30b30 6e 65 63 74 28 74 61 62 6c 65 29 20 3d 3d 20 53  nect(table) == S
30b40 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f  QLiteErrorCode.O
30b50 6b 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  k)))..          
30b60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b80 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 73 20       if (tables 
30b90 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
30ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bb0 20 20 20 20 20 20 74 61 62 6c 65 73 2e 52 65 6d        tables.Rem
30bc0 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  ove(pVtab);.... 
30bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30be0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
30bf0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30c00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30c10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30c20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
30c30 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30c40 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
30c50 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e  xception e) /* N
30c60 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20  OTE: Must catch 
30c70 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ALL. */..       
30c80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30c90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
30ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
30cb0 4f 54 45 3a 20 41 74 20 74 68 69 73 20 70 6f 69  OTE: At this poi
30cc0 6e 74 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20  nt, there is no 
30cd0 77 61 79 20 74 6f 20 72 65 70 6f 72 74 20 74 68  way to report th
30ce0 65 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  e error..       
30cf0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
30d00 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62 61 63 6b    condition back
30d10 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 3b 20   to the caller; 
30d20 74 68 65 72 65 66 6f 72 65 2c 20 75 73 65 20 74  therefore, use t
30d30 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
30d40 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 6f 67      //       log
30d50 67 69 6e 67 20 66 61 63 69 6c 69 74 79 20 69 6e  ging facility in
30d60 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 20 20  stead...        
30d70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
30d80 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
30d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30da0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30db0 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f 67 45          if (LogE
30dc0 78 63 65 70 74 69 6f 6e 73 4e 6f 54 68 72 6f 77  xceptionsNoThrow
30dd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30de0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e00 20 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20    /* throw */.. 
30e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67         SQLiteLog
30e30 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69  .LogMessage(SQLi
30e40 74 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43  teBase.COR_E_EXC
30e50 45 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20  EPTION,..       
30e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e70 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f       HelperMetho
30e80 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
30e90 0d 0a 20 20 20 20 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 43 75                Cu
30eb0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
30ec0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
30ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ee0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
30ef0 69 76 65 4d 65 74 68 6f 64 73 2e 45 78 63 65 70  iveMethods.Excep
30f00 74 69 6f 6e 4d 65 73 73 61 67 65 46 6f 72 6d 61  tionMessageForma
30f10 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f30 64 65 73 74 72 6f 79 20 3f 20 22 78 44 65 73 74  destroy ? "xDest
30f40 72 6f 79 22 20 3a 20 22 78 44 69 73 63 6f 6e 6e  roy" : "xDisconn
30f50 65 63 74 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20  ect", e));..    
30f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30f80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30f90 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
30fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fc0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
30fd0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
30fe0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30ff0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31000 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
31010 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31020 20 20 20 20 20 20 20 20 20 20 46 72 65 65 54 61            FreeTa
31030 62 6c 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ble(pVtab);..   
31040 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31050 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
31060 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31070 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
31080 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
31090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
310e0 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20   #region Static 
310f0 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48  Error Handling H
31100 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
31110 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
31120 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
31130 2f 20 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74  / Arranges for t
31140 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
31150 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65  or message to be
31160 20 70 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65   placed into the
31170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45  ..        /// zE
31180 72 72 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61  rrMsg field of a
31190 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
311a0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2c  rived structure,
311b0 20 66 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20   freeing the..  
311c0 20 20 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69        /// existi
311d0 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  ng error message
311e0 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
311f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
31200 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
31210 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
31220 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
31230 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
31240 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
31250 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
31260 65 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20  e to be used... 
31270 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
31280 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
31290 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
312a0 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
312b0 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
312c0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
312d0 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
312e0 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
312f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
31300 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
31310 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67  <param name="log
31320 45 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20  Errors">..      
31330 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
31340 66 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73  f this error mes
31350 73 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f  sage should also
31360 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67   be logged using
31370 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
31380 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
31390 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73  iteLog" /> class
313a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
313b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
313c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
313d0 3d 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22  ="logExceptions"
313e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
313f0 6f 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68  on-zero if caugh
31400 74 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f  t exceptions sho
31410 75 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73  uld be logged us
31420 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
31430 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
31440 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c  SQLiteLog" /> cl
31450 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ass...        //
31460 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
31470 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
31480 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
31490 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72        /// The er
314a0 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
314b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
314c0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
314d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
314e0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
314f0 75 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20  upon success... 
31500 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
31510 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
31520 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
31530 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72  ol SetTableError
31540 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
31550 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
31560 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
31570 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
31580 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
31590 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20   logErrors,..   
315a0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
315b0 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20  gExceptions,..  
315c0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
315d0 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
315e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
315f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
31600 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
31610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31620 20 20 69 66 20 28 6c 6f 67 45 72 72 6f 72 73 29    if (logErrors)
31630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31640 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31650 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
31660 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 53 51  og.LogMessage(SQ
31670 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
31680 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ror,..          
31690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
316a0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
316b0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
316c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316d0 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
316e0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
316f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31700 20 20 20 20 20 20 20 20 22 56 69 72 74 75 61 6c          "Virtual
31710 20 74 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b 30   table error: {0
31720 7d 22 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a 20  }", error)); /* 
31730 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
31740 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31750 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31760 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
31770 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
31790 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
317a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
317b0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
317c0 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b  success = false;
317d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
317e0 74 50 74 72 20 70 4e 65 77 45 72 72 6f 72 20 3d  tPtr pNewError =
317f0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
31800 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
31810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31830 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e   if (pVtab == In
31840 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31860 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
31870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31880 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b   int offset = 0;
31890 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
318a0 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
318b0 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
318c0 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
318d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
318e0 66 73 65 74 2c 20 49 6e 74 50 74 72 2e 53 69 7a  fset, IntPtr.Siz
318f0 65 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 29 3b  e, sizeof(int));
31900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31910 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
31920 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
31930 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
31940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66                of
31950 66 73 65 74 2c 20 73 69 7a 65 6f 66 28 69 6e 74  fset, sizeof(int
31960 29 2c 20 49 6e 74 50 74 72 2e 53 69 7a 65 29 3b  ), IntPtr.Size);
31970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31980 20 20 20 20 49 6e 74 50 74 72 20 70 4f 6c 64 45      IntPtr pOldE
31990 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61 72  rror = SQLiteMar
319a0 73 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28  shal.ReadIntPtr(
319b0 70 56 74 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d  pVtab, offset);.
319c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
319d0 20 20 20 69 66 20 28 70 4f 6c 64 45 72 72 6f 72     if (pOldError
319e0 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
319f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31a00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31a10 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
31a20 65 6d 6f 72 79 2e 46 72 65 65 28 70 4f 6c 64 45  emory.Free(pOldE
31a30 72 72 6f 72 29 3b 20 70 4f 6c 64 45 72 72 6f 72  rror); pOldError
31a40 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
31a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31a60 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
31a70 61 6c 2e 57 72 69 74 65 49 6e 74 50 74 72 28 70  al.WriteIntPtr(p
31a80 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 70 4f  Vtab, offset, pO
31a90 6c 64 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  ldError);..     
31aa0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ac0 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 6e 75 6c  if (error == nul
31ad0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
31ae0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
31af0 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
31b00 20 20 20 20 20 20 20 20 70 4e 65 77 45 72 72 6f          pNewErro
31b10 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67  r = SQLiteString
31b20 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53  .Utf8IntPtrFromS
31b30 74 72 69 6e 67 28 65 72 72 6f 72 29 3b 0d 0a 20  tring(error);.. 
31b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
31b50 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 57 72 69  QLiteMarshal.Wri
31b60 74 65 49 6e 74 50 74 72 28 70 56 74 61 62 2c 20  teIntPtr(pVtab, 
31b70 6f 66 66 73 65 74 2c 20 70 4e 65 77 45 72 72 6f  offset, pNewErro
31b80 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
31b90 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
31ba0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
31bb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
31bc0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
31bd0 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75  n e) /* NOTE: Mu
31be0 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f  st catch ALL. */
31bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31c10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
31c20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31c30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
31c40 28 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 29 0d  (logExceptions).
31c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31c60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c80 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73  SQLiteLog.LogMes
31c90 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e  sage(SQLiteBase.
31ca0 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c  COR_E_EXCEPTION,
31cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
31cd0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
31ce0 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d00 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
31d10 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
31d20 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
31d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d40 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
31d50 6f 64 73 2e 45 78 63 65 70 74 69 6f 6e 4d 65 73  ods.ExceptionMes
31d60 73 61 67 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  sageFormat,..   
31d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d80 20 20 20 20 20 20 20 20 20 22 53 65 74 54 61 62           "SetTab
31d90 6c 65 45 72 72 6f 72 22 2c 20 65 29 29 3b 20 2f  leError", e)); /
31da0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
31db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31dc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
31dd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31de0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
31df0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e10 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
31e20 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
31e30 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31e40 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31e50 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
31e60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31e70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73            if (!s
31e80 75 63 63 65 73 73 20 26 26 20 28 70 4e 65 77 45  uccess && (pNewE
31e90 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  rror != IntPtr.Z
31ea0 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
31eb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
31ed0 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28  LiteMemory.Free(
31ee0 70 4e 65 77 45 72 72 6f 72 29 3b 0d 0a 20 20 20  pNewError);..   
31ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f00 20 70 4e 65 77 45 72 72 6f 72 20 3d 20 49 6e 74   pNewError = Int
31f10 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
31f20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
31f30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31f40 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
31f50 6e 20 73 75 63 63 65 73 73 3b 0d 0a 20 20 20 20  n success;..    
31f60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31f70 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fb0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31fc0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
31fd0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
31fe0 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65 20  rranges for the 
31ff0 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20  specified error 
32000 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70 6c  message to be pl
32010 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a 20  aced into the.. 
32020 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72 4d         /// zErrM
32030 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73 71  sg field of a sq
32040 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
32050 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66 72  ed structure, fr
32060 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  eeing the..     
32070 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67 20     /// existing 
32080 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69  error message, i
32090 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20  f any...        
320a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
320b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
320c0 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
320d0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
320e0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
320f0 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f  LiteModule" /> o
32100 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
32110 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20  o be used...    
32120 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32130 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32140 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65  aram name="table
32150 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32160 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
32170 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
32180 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
32190 74 61 6e 63 65 20 75 73 65 64 20 74 6f 0d 0a 20  tance used to.. 
321a0 20 20 20 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75         /// looku
321b0 70 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f 69  p the native poi
321c0 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
321d0 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
321e0 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
321f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
32200 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32210 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45  param name="logE
32220 72 72 6f 72 73 22 3e 0d 0a 20 20 20 20 20 20 20  rrors">..       
32230 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
32240 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
32250 61 67 65 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20  age should also 
32260 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
32270 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32280 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
32290 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
322a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
322b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
322c0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
322d0 22 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 22 3e  "logExceptions">
322e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  ..        /// No
322f0 6e 2d 7a 65 72 6f 20 69 66 20 63 61 75 67 68 74  n-zero if caught
32300 20 65 78 63 65 70 74 69 6f 6e 73 20 73 68 6f 75   exceptions shou
32310 6c 64 20 62 65 20 6c 6f 67 67 65 64 20 75 73 69  ld be logged usi
32320 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  ng the..        
32330 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
32340 51 4c 69 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61  QLiteLog" /> cla
32350 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32360 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
32370 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
32380 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
32390 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72       /// The err
323a0 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
323b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
323c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
323d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
323e0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75    /// Non-zero u
323f0 70 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20  pon success...  
32400 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
32410 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  rns>..        pr
32420 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
32430 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  l SetTableError(
32440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
32450 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
32460 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
32470 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
32480 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20  le table,..     
32490 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45         bool logE
324a0 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20  rrors,..        
324b0 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65      bool logExce
324c0 70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20  ptions,..       
324d0 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f       string erro
324e0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
324f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
32500 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
32510 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le == null)..   
32520 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
32530 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
32540 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
32550 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e 4e   pVtab = table.N
32560 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d 0a  ativeHandle;....
32570 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
32580 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e  pVtab == IntPtr.
32590 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
325a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
325b0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
325c0 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54 61      return SetTa
325d0 62 6c 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20  bleError(..     
325e0 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c             modul
325f0 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72  e, pVtab, logErr
32600 6f 72 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f  ors, logExceptio
32610 6e 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ns, error);..   
32620 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32630 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32670 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
32680 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
32690 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
326a0 41 72 72 61 6e 67 65 73 20 66 6f 72 20 74 68 65  Arranges for the
326b0 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
326c0 20 6d 65 73 73 61 67 65 20 74 6f 20 62 65 20 70   message to be p
326d0 6c 61 63 65 64 20 69 6e 74 6f 20 74 68 65 0d 0a  laced into the..
326e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 7a 45 72 72          /// zErr
326f0 4d 73 67 20 66 69 65 6c 64 20 6f 66 20 61 20 73  Msg field of a s
32700 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
32710 76 65 64 20 73 74 72 75 63 74 75 72 65 2c 20 66  ved structure, f
32720 72 65 65 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  reeing the..    
32730 20 20 20 20 2f 2f 2f 20 65 78 69 73 74 69 6e 67      /// existing
32740 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20   error message, 
32750 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20  if any...       
32760 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
32770 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
32780 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
32790 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
327a0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
327b0 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20  QLiteModule" /> 
327c0 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
327d0 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  to be used...   
327e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
327f0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
32800 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72  param name="pCur
32810 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
32820 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
32830 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
32840 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
32850 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
32860 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  re..        /// 
32870 75 73 65 64 20 74 6f 20 67 65 74 20 74 68 65 20  used to get the 
32880 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
32890 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
328a0 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
328b0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
328c0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
328d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
328e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
328f0 65 3d 22 6c 6f 67 45 72 72 6f 72 73 22 3e 0d 0a  e="logErrors">..
32900 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d          /// Non-
32910 7a 65 72 6f 20 69 66 20 74 68 69 73 20 65 72 72  zero if this err
32920 6f 72 20 6d 65 73 73 61 67 65 20 73 68 6f 75 6c  or message shoul
32930 64 20 61 6c 73 6f 20 62 65 20 6c 6f 67 67 65 64  d also be logged
32940 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
32950 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
32960 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22 20 2f 3e  f="SQLiteLog" />
32970 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
32980 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
32990 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
329a0 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 78 63 65 70  m name="logExcep
329b0 74 69 6f 6e 73 22 3e 0d 0a 20 20 20 20 20 20 20  tions">..       
329c0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
329d0 20 63 61 75 67 68 74 20 65 78 63 65 70 74 69 6f   caught exceptio
329e0 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 67  ns should be log
329f0 67 65 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ged using the.. 
32a00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
32a10 63 72 65 66 3d 22 53 51 4c 69 74 65 4c 6f 67 22  cref="SQLiteLog"
32a20 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
32a30 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
32a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
32a50 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
32a60 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
32a70 54 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  The error messag
32a80 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
32a90 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
32aa0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
32ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
32ac0 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
32ad0 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
32ae0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
32af0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
32b00 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73  tic bool SetCurs
32b10 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
32b20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
32b30 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
32b40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
32b50 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
32b60 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
32b70 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
32b80 20 20 62 6f 6f 6c 20 6c 6f 67 45 78 63 65 70 74    bool logExcept
32b90 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ions,..         
32ba0 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
32bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
32bc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32bd0 20 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73         if (pCurs
32be0 6f 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  or == IntPtr.Zer
32bf0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
32c00 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
32c10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32c20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d 20   IntPtr pVtab = 
32c30 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28  TableFromCursor(
32c40 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72 29  module, pCursor)
32c50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32c60 20 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e   if (pVtab == In
32c70 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
32c80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32c90 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
32ca0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
32cb0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a  SetTableError(..
32cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32cd0 6d 6f 64 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c  module, pVtab, l
32ce0 6f 67 45 72 72 6f 72 73 2c 20 6c 6f 67 45 78 63  ogErrors, logExc
32cf0 65 70 74 69 6f 6e 73 2c 20 65 72 72 6f 72 29 3b  eptions, error);
32d00 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
32d10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32d60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
32d70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
32d80 20 2f 2f 2f 20 41 72 72 61 6e 67 65 73 20 66 6f   /// Arranges fo
32d90 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
32da0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f  error message to
32db0 20 62 65 20 70 6c 61 63 65 64 20 69 6e 74 6f 20   be placed into 
32dc0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
32dd0 20 7a 45 72 72 4d 73 67 20 66 69 65 6c 64 20 6f   zErrMsg field o
32de0 66 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62  f a sqlite3_vtab
32df0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
32e00 72 65 2c 20 66 72 65 65 69 6e 67 20 74 68 65 0d  re, freeing the.
32e10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 65 78 69  .        /// exi
32e20 73 74 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73  sting error mess
32e30 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  age, if any...  
32e40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
32e50 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
32e60 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
32e70 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  odule">..       
32e80 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
32e90 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ef="SQLiteModule
32ea0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
32eb0 61 6e 63 65 20 74 6f 20 62 65 20 75 73 65 64 2e  ance to be used.
32ec0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
32ed0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
32ee0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
32ef0 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
32f00 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
32f10 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
32f20 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
32f30 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
32f40 63 65 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20  ce used to..    
32f50 20 20 20 20 2f 2f 2f 20 6c 6f 6f 6b 75 70 20 74      /// lookup t
32f60 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
32f70 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
32f80 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
32f90 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
32fa0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
32fb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
32fc0 61 6d 20 6e 61 6d 65 3d 22 6c 6f 67 45 72 72 6f  am name="logErro
32fd0 72 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rs">..        //
32fe0 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
32ff0 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  is error message
33000 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20   should also be 
33010 6c 6f 67 67 65 64 20 75 73 69 6e 67 20 74 68 65  logged using the
33020 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
33030 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
33040 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  og" /> class... 
33050 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
33060 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
33070 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 6f   <param name="lo
33080 67 45 78 63 65 70 74 69 6f 6e 73 22 3e 0d 0a 20  gExceptions">.. 
33090 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a         /// Non-z
330a0 65 72 6f 20 69 66 20 63 61 75 67 68 74 20 65 78  ero if caught ex
330b0 63 65 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ceptions should 
330c0 62 65 20 6c 6f 67 67 65 64 20 75 73 69 6e 67 20  be logged using 
330d0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
330e0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
330f0 74 65 4c 6f 67 22 20 2f 3e 20 63 6c 61 73 73 2e  teLog" /> class.
33100 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33110 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
33120 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
33130 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
33140 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20    /// The error 
33150 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  message...      
33160 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
33170 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
33180 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
33190 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
331a0 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
331b0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
331c0 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
331d0 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 53  te static bool S
331e0 65 74 43 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a  etCursorError(..
331f0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
33200 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
33210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
33220 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
33230 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a  Cursor cursor,..
33240 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
33250 20 6c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20   logErrors,..   
33260 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
33270 67 45 78 63 65 70 74 69 6f 6e 73 2c 0d 0a 20 20  gExceptions,..  
33280 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
33290 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
332a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
332b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
332c0 20 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c   (cursor == null
332d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
332e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
332f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33300 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 20 3d  IntPtr pCursor =
33310 20 63 75 72 73 6f 72 2e 4e 61 74 69 76 65 48 61   cursor.NativeHa
33320 6e 64 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ndle;....       
33330 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72       if (pCursor
33340 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
33350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33360 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
33370 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
33380 65 74 75 72 6e 20 53 65 74 43 75 72 73 6f 72 45  eturn SetCursorE
33390 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
333a0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2c 20 70         module, p
333b0 43 75 72 73 6f 72 2c 20 6c 6f 67 45 72 72 6f 72  Cursor, logError
333c0 73 2c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73  s, logExceptions
333d0 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  , error);..     
333e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
333f0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
33400 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
33410 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33460 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
33470 6f 6e 20 50 72 6f 74 65 63 74 65 64 20 4d 65 6d  on Protected Mem
33480 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 23 72  bers..        #r
33490 65 67 69 6f 6e 20 4d 6f 64 75 6c 65 20 48 65 6c  egion Module Hel
334a0 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
334b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
334c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
334d0 47 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73  Gets and returns
334e0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
334f0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
33500 75 6c 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63  ule" /> interfac
33510 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
33520 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f  mplementation to
33530 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 63 72   be used when cr
33540 65 61 74 69 6e 67 20 74 68 65 20 6e 61 74 69 76  eating the nativ
33550 65 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  e sqlite3_module
33560 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 74  ..        /// st
33570 72 75 63 74 75 72 65 2e 20 20 44 65 72 69 76 65  ructure.  Derive
33580 64 20 63 6c 61 73 73 65 73 20 6d 61 79 20 6f 76  d classes may ov
33590 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 68  erride this meth
335a0 6f 64 20 74 6f 20 73 75 70 70 6c 79 20 61 6e 0d  od to supply an.
335b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 74  .        /// alt
335c0 65 72 6e 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74  ernate implement
335d0 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 3c 73  ation for the <s
335e0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
335f0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e  NativeModule" />
33600 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e  ..        /// in
33610 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20  terface...      
33620 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
33630 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
33640 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
33650 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
33660 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
33670 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69 6e 74 65  eModule" /> inte
33680 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61  rface implementa
33690 74 69 6f 6e 20 74 6f 0d 0a 20 20 20 20 20 20 20  tion to..       
336a0 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 77 68 65   /// be used whe
336b0 6e 20 70 6f 70 75 6c 61 74 69 6e 67 20 74 68 65  n populating the
336c0 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f   native sqlite3_
336d0 6d 6f 64 75 6c 65 20 73 74 72 75 63 74 75 72 65  module structure
336e0 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 2f  .  If..        /
336f0 2f 2f 20 74 68 65 20 72 65 74 75 72 6e 65 64 20  // the returned 
33700 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 74  value is null, t
33710 68 65 20 70 72 69 76 61 74 65 20 6d 65 74 68 6f  he private metho
33720 64 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ds provided by t
33730 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
33740 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
33750 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 63 6c 61 73  eModule" /> clas
33760 73 20 61 6e 64 20 72 65 6c 61 74 69 6e 67 20 74  s and relating t
33770 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
33780 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
33790 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
337a0 65 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65 20  e" /> interface 
337b0 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f   will be used to
337c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72  ..        /// cr
337d0 65 61 74 65 20 74 68 65 20 6e 65 63 65 73 73 61  eate the necessa
337e0 72 79 20 64 65 6c 65 67 61 74 65 73 2e 0d 0a 20  ry delegates... 
337f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
33800 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
33810 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
33820 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f   ISQLiteNativeMo
33830 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65 4d 6f  dule GetNativeMo
33840 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20 20  duleImpl()..    
33850 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33860 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 20     return null; 
33870 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65  /* NOTE: Use the
33880 20 62 75 69 6c 74 2d 69 6e 20 64 65 66 61 75 6c   built-in defaul
33890 74 20 64 65 6c 65 67 61 74 65 73 2e 20 2a 2f 0d  t delegates. */.
338a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
338b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
338c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33900 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
33910 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
33920 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
33930 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65  returns the <see
33940 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33950 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a  tiveModule" />..
33960 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65          /// inte
33970 72 66 61 63 65 20 69 6d 70 6c 65 6d 65 6e 74 61  rface implementa
33980 74 69 6f 6e 20 63 6f 72 72 65 73 70 6f 6e 64 69  tion correspondi
33990 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  ng to the curren
339a0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  t..        /// <
339b0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
339c0 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63  Module" /> objec
339d0 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  t instance...   
339e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
339f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
33a00 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
33a10 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
33a20 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
33a30 74 69 76 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 69  tiveModule" /> i
33a40 6e 74 65 72 66 61 63 65 20 69 6d 70 6c 65 6d 65  nterface impleme
33a50 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  ntation..       
33a60 20 2f 2f 2f 20 63 6f 72 72 65 73 70 6f 6e 64 69   /// correspondi
33a70 6e 67 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  ng to the curren
33a80 74 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  t <see cref="SQL
33a90 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62  iteModule" /> ob
33aa0 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
33ab0 2f 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  / instance...   
33ac0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
33ad0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
33ae0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
33af0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
33b00 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d  le CreateNativeM
33b10 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20  oduleImpl()..   
33b20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
33b30 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
33b40 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
33b50 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
33b60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
33b70 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
33b80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33bd0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61        #region Na
33be0 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c 70 65  tive Table Helpe
33bf0 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
33c00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
33c10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c  ..        /// Al
33c20 6c 6f 63 61 74 65 73 20 61 20 6e 61 74 69 76 65  locates a native
33c30 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65   sqlite3_vtab de
33c40 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
33c50 61 6e 64 20 72 65 74 75 72 6e 73 20 61 0d 0a 20  and returns a.. 
33c60 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76         /// nativ
33c70 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 2e  e pointer to it.
33c80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
33c90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
33ca0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
33cb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e  .        /// A n
33cc0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
33cd0 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74 65   a native sqlite
33ce0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
33cf0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
33d00 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
33d10 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  >..        prote
33d20 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
33d30 50 74 72 20 41 6c 6c 6f 63 61 74 65 54 61 62 6c  Ptr AllocateTabl
33d40 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
33d50 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
33d60 73 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53  size = Marshal.S
33d70 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20  izeOf(typeof(.. 
33d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
33d90 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
33da0 64 73 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 29  ds.sqlite3_vtab)
33db0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
33dc0 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 4d    return SQLiteM
33dd0 65 6d 6f 72 79 2e 41 6c 6c 6f 63 61 74 65 28 73  emory.Allocate(s
33de0 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ize);..        }
33df0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
33e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
33e50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
33e60 20 20 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 73 20        /// Zeros 
33e70 6f 75 74 20 74 68 65 20 66 69 65 6c 64 73 20 6f  out the fields o
33e80 66 20 61 20 6e 61 74 69 76 65 20 73 71 6c 69 74  f a native sqlit
33e90 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20  e3_vtab derived 
33ea0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
33eb0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
33ec0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
33ed0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
33ee0 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
33ef0 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
33f00 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 74 69  nter to the nati
33f10 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
33f20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
33f30 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e to..        //
33f40 2f 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  / zero...       
33f50 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
33f60 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
33f70 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 5a 65   virtual void Ze
33f80 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  roTable(..      
33f90 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
33fa0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
33fb0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
33fc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
33fd0 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
33fe0 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
33ff0 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
34000 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
34010 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
34020 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
34030 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
34040 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73  tPtr(pVtab, offs
34050 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  et, IntPtr.Zero)
34060 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34070 20 6f 66 66 73 65 74 20 3d 20 53 51 4c 69 74 65   offset = SQLite
34080 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f 66 66 73  Marshal.NextOffs
34090 65 74 4f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  etOf(..         
340a0 20 20 20 20 20 20 20 6f 66 66 73 65 74 2c 20 49         offset, I
340b0 6e 74 50 74 72 2e 53 69 7a 65 2c 20 73 69 7a 65  ntPtr.Size, size
340c0 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
340d0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
340e0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
340f0 32 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  2(pVtab, offset,
34100 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   0);....        
34110 20 20 20 20 6f 66 66 73 65 74 20 3d 20 53 51 4c      offset = SQL
34120 69 74 65 4d 61 72 73 68 61 6c 2e 4e 65 78 74 4f  iteMarshal.NextO
34130 66 66 73 65 74 4f 66 28 0d 0a 20 20 20 20 20 20  ffsetOf(..      
34140 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
34150 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29 2c 20 49  , sizeof(int), I
34160 6e 74 50 74 72 2e 53 69 7a 65 29 3b 0d 0a 0d 0a  ntPtr.Size);....
34170 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
34180 74 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49  teMarshal.WriteI
34190 6e 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66  ntPtr(pVtab, off
341a0 73 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  set, IntPtr.Zero
341b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
341c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
341d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
34220 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
34230 20 20 20 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e     /// Frees a n
34240 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74  ative sqlite3_vt
34250 61 62 20 73 74 72 75 63 74 75 72 65 20 75 73 69  ab structure usi
34260 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65 64 20  ng the provided 
34270 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
34280 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  /// pointer to i
34290 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
342a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
342b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
342c0 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
342d0 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69        /// A nati
342e0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ve pointer to a 
342f0 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76  native sqlite3_v
34300 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
34310 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
34320 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
34330 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20        protected 
34340 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65  virtual void Fre
34350 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  eTable(..       
34360 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
34370 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  b..            )
34380 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
34390 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
343a0 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 6e 75  eError(pVtab, nu
343b0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
343c0 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
343d0 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  ree(pVtab);..   
343e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
343f0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
34400 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34450 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
34460 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72 20 48   Native Cursor H
34470 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
34480 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
34490 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
344a0 2f 20 41 6c 6c 6f 63 61 74 65 73 20 61 20 6e 61  / Allocates a na
344b0 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
344c0 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
344d0 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 0d 0a   structure and..
344e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
344f0 72 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69  rns a native poi
34500 6e 74 65 72 20 74 6f 20 69 74 2e 0d 0a 20 20 20  nter to it...   
34510 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
34520 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
34530 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
34540 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76 65      /// A native
34550 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61   pointer to a na
34560 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
34570 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
34580 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
34590 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
345a0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  ns>..        pro
345b0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
345c0 6e 74 50 74 72 20 41 6c 6c 6f 63 61 74 65 43 75  ntPtr AllocateCu
345d0 72 73 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20  rsor()..        
345e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
345f0 6e 74 20 73 69 7a 65 20 3d 20 4d 61 72 73 68 61  nt size = Marsha
34600 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28  l.SizeOf(typeof(
34610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34620 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
34630 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 74  thods.sqlite3_vt
34640 61 62 5f 63 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a  ab_cursor));....
34650 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
34660 72 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e  rn SQLiteMemory.
34670 41 6c 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d  Allocate(size);.
34680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
34690 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
346a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
346e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
346f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
34700 2f 2f 2f 20 46 72 65 65 73 20 61 20 6e 61 74 69  /// Frees a nati
34710 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  ve sqlite3_vtab_
34720 63 75 72 73 6f 72 20 73 74 72 75 63 74 75 72 65  cursor structure
34730 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 76 69   using the provi
34740 64 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ded..        ///
34750 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
34760 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20  to it...        
34770 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
34780 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
34790 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
347a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
347b0 41 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  A native pointer
347c0 20 74 6f 20 61 20 6e 61 74 69 76 65 20 73 71 6c   to a native sql
347d0 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
347e0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
347f0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
34800 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
34810 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
34820 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65 43 75  tual void FreeCu
34830 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rsor(..         
34840 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
34850 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  r..            )
34860 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
34870 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
34880 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75 72 73  emory.Free(pCurs
34890 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
348a0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
348b0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
348c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34900 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34910 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74 69 63    #region Static
34920 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65   Table Lookup Me
34930 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f  thods..        /
34940 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
34950 20 20 20 20 20 20 2f 2f 2f 20 52 65 61 64 73 20        /// Reads 
34960 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
34970 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
34980 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
34990 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20  ab derived..    
349a0 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72      /// structur
349b0 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e  e based on the n
349c0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
349d0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
349e0 62 5f 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20  b_cursor..      
349f0 20 20 2f 2f 2f 20 64 65 72 69 76 65 64 20 73 74    /// derived st
34a00 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
34a10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
34a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
34a30 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c  aram name="modul
34a40 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
34a50 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
34a60 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
34a70 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
34a80 20 74 6f 20 62 65 20 75 73 65 64 2e 0d 0a 20 20   to be used...  
34a90 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
34aa0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
34ab0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
34ac0 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
34ad0 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70  /// The native p
34ae0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34af0 6c 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f  lite3_vtab_curso
34b00 72 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  r derived struct
34b10 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ure..        ///
34b20 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f 20 72   from which to r
34b30 65 61 64 20 74 68 65 20 6e 61 74 69 76 65 20 70  ead the native p
34b40 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71  ointer to the sq
34b50 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76  lite3_vtab deriv
34b60 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
34b70 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
34b80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
34b90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
34ba0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
34bb0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
34bc0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
34bd0 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
34be0 76 65 64 20 73 74 72 75 63 74 75 72 65 20 2d 4f  ved structure -O
34bf0 52 2d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  R-..        /// 
34c00 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50 74  <see cref="IntPt
34c10 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 69 74  r.Zero" /> if it
34c20 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
34c30 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  mined...        
34c40 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
34c50 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34c60 73 74 61 74 69 63 20 49 6e 74 50 74 72 20 54 61  static IntPtr Ta
34c70 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a  bleFromCursor(..
34c80 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
34c90 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c  teModule module,
34ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34cb0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
34cc0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
34cd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
34ce0 20 20 20 20 69 66 20 28 70 43 75 72 73 6f 72 20      if (pCursor 
34cf0 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  == IntPtr.Zero).
34d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34d10 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
34d20 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
34d30 20 20 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68      return Marsh
34d40 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70 43  al.ReadIntPtr(pC
34d50 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
34d60 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
34d70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34d80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34dd0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 61 62       #region Tab
34de0 6c 65 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f 64  le Lookup Method
34df0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
34e00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
34e10 20 20 2f 2f 2f 20 52 65 61 64 73 20 61 6e 64 20    /// Reads and 
34e20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 74 69  returns the nati
34e30 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
34e40 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
34e50 65 72 69 76 65 64 0d 0a 20 20 20 20 20 20 20 20  erived..        
34e60 2f 2f 2f 20 73 74 72 75 63 74 75 72 65 20 62 61  /// structure ba
34e70 73 65 64 20 6f 6e 20 74 68 65 20 6e 61 74 69 76  sed on the nativ
34e80 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
34e90 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63 75   sqlite3_vtab_cu
34ea0 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rsor..        //
34eb0 2f 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  / derived struct
34ec0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34ed0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
34ee0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
34ef0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
34f00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
34f10 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34f20 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
34f30 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
34f40 76 65 64 20 73 74 72 75 63 74 75 72 65 0d 0a 20  ved structure.. 
34f50 20 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20         /// from 
34f60 77 68 69 63 68 20 74 6f 20 72 65 61 64 20 74 68  which to read th
34f70 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
34f80 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
34f90 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20 20  vtab derived..  
34fa0 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63 74        /// struct
34fb0 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
34fc0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
34fd0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
34fe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
34ff0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
35000 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
35010 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
35020 72 75 63 74 75 72 65 20 2d 4f 52 2d 0d 0a 20 20  ructure -OR-..  
35030 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35040 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
35050 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e 6e 6f  " /> if it canno
35060 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
35070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35080 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35090 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
350a0 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c 65  ual IntPtr Table
350b0 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20 20 20  FromCursor(..   
350c0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
350d0 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20  pCursor..       
350e0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
350f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
35100 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f 6d 43  eturn TableFromC
35110 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43 75 72  ursor(this, pCur
35120 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  sor);..        }
35130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
35140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35180 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
35190 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
351a0 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b 73 20        /// Looks 
351b0 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  up and returns t
351c0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
351d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
351e0 22 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20  " /> object..   
351f0 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63       /// instanc
35200 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6e  e based on the n
35210 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35220 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
35230 62 20 64 65 72 69 76 65 64 0d 0a 20 20 20 20 20  b derived..     
35240 20 20 20 2f 2f 2f 20 73 74 72 75 63 74 75 72 65     /// structure
35250 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35260 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
35270 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35280 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20  me="pVtab">..   
35290 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
352a0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
352b0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  he sqlite3_vtab 
352c0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
352d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
352e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
352f0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
35300 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
35310 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
35320 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
35330 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
35340 63 65 20 6f 72 20 6e 75 6c 6c 20 69 66 0d 0a 20  ce or null if.. 
35350 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 63         /// the c
35360 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65  orresponding one
35370 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64   cannot be found
35380 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35390 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
353a0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
353b0 74 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75  tual SQLiteVirtu
353c0 61 6c 54 61 62 6c 65 20 54 61 62 6c 65 46 72 6f  alTable TableFro
353d0 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20  mIntPtr(..      
353e0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
353f0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
35400 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
35410 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
35420 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
35430 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
35440 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35450 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
35460 72 28 70 56 74 61 62 2c 20 22 69 6e 76 61 6c 69  r(pVtab, "invali
35470 64 20 6e 61 74 69 76 65 20 74 61 62 6c 65 22 29  d native table")
35480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
35490 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
354a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
354b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
354c0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
354d0 20 74 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20   table;....     
354e0 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62 6c         if ((tabl
354f0 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a  es != null) &&..
35500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35510 74 61 62 6c 65 73 2e 54 72 79 47 65 74 56 61 6c  tables.TryGetVal
35520 75 65 28 70 56 74 61 62 2c 20 6f 75 74 20 74 61  ue(pVtab, out ta
35530 62 6c 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ble))..         
35540 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35550 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 62        return tab
35560 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
35570 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
35580 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
35590 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d 65 74  pVtab, HelperMet
355a0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
355b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
355c0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
355d0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
355e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
355f0 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c 65 20   "managed table 
35600 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75 6e  for {0} not foun
35610 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a 0d 0a  d", pVtab));....
35620 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
35630 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
35640 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35690 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
356a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
356b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
356c0 6f 63 61 74 65 73 20 61 6e 64 20 72 65 74 75 72  ocates and retur
356d0 6e 73 20 61 20 6e 61 74 69 76 65 20 70 6f 69 6e  ns a native poin
356e0 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74 65 33  ter to a sqlite3
356f0 5f 76 74 61 62 20 64 65 72 69 76 65 64 0d 0a 20  _vtab derived.. 
35700 20 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 75 63         /// struc
35710 74 75 72 65 20 61 6e 64 20 63 72 65 61 74 65 73  ture and creates
35720 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e 20   an association 
35730 62 65 74 77 65 65 6e 20 69 74 20 61 6e 64 20 74  between it and t
35740 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
35750 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
35760 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
35770 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
35780 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ct instance...  
35790 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
357a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
357b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
357c0 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
357d0 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
357e0 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
357f0 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  Table" /> object
35800 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 62 65 20   instance to be 
35810 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  used..        //
35820 2f 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20  / when creating 
35830 74 68 65 20 61 73 73 6f 63 69 61 74 69 6f 6e 2e  the association.
35840 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35850 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
35860 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
35870 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
35880 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
35890 20 61 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20   a sqlite3_vtab 
358a0 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
358b0 65 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e or..        //
358c0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  / <see cref="Int
358d0 50 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20  Ptr.Zero" /> if 
358e0 74 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73  the method fails
358f0 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e   for any reason.
35900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35910 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
35920 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
35930 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c 65  ual IntPtr Table
35940 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
35950 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
35960 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d  tualTable table.
35970 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
35980 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35990 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62 6c         if ((tabl
359a0 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 74  e == null) || (t
359b0 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  ables == null)).
359c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
359d0 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a   return IntPtr.Z
359e0 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
359f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
35a00 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
35a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
35a20 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73  l success = fals
35a30 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
35a40 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
35a50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35a60 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 41 6c        pVtab = Al
35a70 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b 0d 0a  locateTable();..
35a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35a90 20 20 69 66 20 28 70 56 74 61 62 20 21 3d 20 49    if (pVtab != I
35aa0 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
35ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
35ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35ad0 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28 70 56      ZeroTable(pV
35ae0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
35af0 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65             table
35b00 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d 20  .NativeHandle = 
35b10 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20 20  pVtab;..        
35b20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
35b30 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20 74 61  es.Add(pVtab, ta
35b40 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ble);..         
35b50 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65             succe
35b60 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ss = true;..    
35b70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
35b80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35b90 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
35ba0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
35bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35bc0 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20 26    if (!success &
35bd0 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e 74 50  & (pVtab != IntP
35be0 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20  tr.Zero))..     
35bf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
35c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35c10 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74 61    FreeTable(pVta
35c20 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b);..           
35c30 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d           pVtab =
35c40 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
35c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
35c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35c70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
35c80 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a 20 20  eturn pVtab;..  
35c90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
35ca0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
35cb0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35d00 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
35d10 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75 70 20  n Cursor Lookup 
35d20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
35d30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35d40 20 20 20 20 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b          /// Look
35d50 73 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73  s up and returns
35d60 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
35d70 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
35d80 6c 65 43 75 72 73 6f 72 22 20 2f 3e 0d 0a 20 20  leCursor" />..  
35d90 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74        /// object
35da0 20 69 6e 73 74 61 6e 63 65 20 62 61 73 65 64 20   instance based 
35db0 6f 6e 20 74 68 65 20 6e 61 74 69 76 65 20 70 6f  on the native po
35dc0 69 6e 74 65 72 20 74 6f 20 74 68 65 0d 0a 20 20  inter to the..  
35dd0 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
35de0 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
35df0 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
35e00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
35e10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
35e20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
35e30 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
35e40 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
35e50 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
35e60 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
35e70 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
35e80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
35e90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
35ea0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
35eb0 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20 20  ="pCursor">..   
35ec0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74       /// The nat
35ed0 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  ive pointer to t
35ee0 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  he sqlite3_vtab_
35ef0 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20 73  cursor derived s
35f00 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
35f10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
35f20 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
35f30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
35f40 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
35f50 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c  f="SQLiteVirtual
35f60 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20  TableCursor" /> 
35f70 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
35f80 6f 72 20 6e 75 6c 6c 0d 0a 20 20 20 20 20 20 20  or null..       
35f90 20 2f 2f 2f 20 69 66 20 74 68 65 20 63 6f 72 72   /// if the corr
35fa0 65 73 70 6f 6e 64 69 6e 67 20 6f 6e 65 20 63 61  esponding one ca
35fb0 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a  nnot be found...
35fc0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
35fd0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
35fe0 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
35ff0 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  l SQLiteVirtualT
36000 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72 73 6f  ableCursor Curso
36010 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  rFromIntPtr(..  
36020 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
36030 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20   pVtab,..       
36040 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
36050 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
36060 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
36070 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
36080 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50 74 72  Cursor == IntPtr
36090 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
360a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
360b0 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45         SetTableE
360c0 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69 6e 76  rror(pVtab, "inv
360d0 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75 72 73  alid native curs
360e0 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  or");..         
360f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
36100 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
36110 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
36120 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
36130 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
36140 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  r;....          
36150 20 20 69 66 20 28 28 63 75 72 73 6f 72 73 20 21    if ((cursors !
36160 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
36170 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73              curs
36180 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  ors.TryGetValue(
36190 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63 75 72  pCursor, out cur
361a0 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20  sor))..         
361b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
361c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72        return cur
361d0 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  sor;..          
361e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
361f0 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
36200 28 70 56 74 61 62 2c 20 48 65 6c 70 65 72 4d 65  (pVtab, HelperMe
36210 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
36220 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
36230 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
36240 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
36250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36260 20 20 22 6d 61 6e 61 67 65 64 20 63 75 72 73 6f    "managed curso
36270 72 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f  r for {0} not fo
36280 75 6e 64 22 2c 20 70 43 75 72 73 6f 72 29 29 3b  und", pCursor));
36290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
362a0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
362b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
362c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
362d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
362e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
362f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
36310 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
36320 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
36330 20 41 6c 6c 6f 63 61 74 65 73 20 61 6e 64 20 72   Allocates and r
36340 65 74 75 72 6e 73 20 61 20 6e 61 74 69 76 65 20  eturns a native 
36350 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c  pointer to a sql
36360 69 74 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72  ite3_vtab_cursor
36370 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
36380 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 20  rived structure 
36390 61 6e 64 20 63 72 65 61 74 65 73 20 61 6e 20 61  and creates an a
363a0 73 73 6f 63 69 61 74 69 6f 6e 20 62 65 74 77 65  ssociation betwe
363b0 65 6e 20 69 74 20 61 6e 64 20 74 68 65 0d 0a 20  en it and the.. 
363c0 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
363d0 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
363e0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
363f0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
36400 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
36410 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
36420 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
36430 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
36440 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20  cursor">..      
36450 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
36460 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
36470 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f  alTableCursor" /
36480 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
36490 65 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20  e to be..       
364a0 20 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e 20 63   /// used when c
364b0 72 65 61 74 69 6e 67 20 74 68 65 20 61 73 73 6f  reating the asso
364c0 63 69 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ciation...      
364d0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
364e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
364f0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
36500 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
36510 69 6e 74 65 72 20 74 6f 20 61 20 73 71 6c 69 74  inter to a sqlit
36520 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
36530 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
36540 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   or..        ///
36550 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 50   <see cref="IntP
36560 74 72 2e 5a 65 72 6f 22 20 2f 3e 20 69 66 20 74  tr.Zero" /> if t
36570 68 65 20 6d 65 74 68 6f 64 20 66 61 69 6c 73 20  he method fails 
36580 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2e 0d  for any reason..
36590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
365a0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
365b0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
365c0 61 6c 20 49 6e 74 50 74 72 20 43 75 72 73 6f 72  al IntPtr Cursor
365d0 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
365e0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
365f0 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
36600 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cursor..        
36610 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
36620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
36630 20 28 28 63 75 72 73 6f 72 20 3d 3d 20 6e 75 6c   ((cursor == nul
36640 6c 29 20 7c 7c 20 28 63 75 72 73 6f 72 73 20 3d  l) || (cursors =
36650 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
36660 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
36670 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
36680 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
36690 50 74 72 20 70 43 75 72 73 6f 72 20 3d 20 49 6e  Ptr pCursor = In
366a0 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20  tPtr.Zero;..    
366b0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 75 63          bool suc
366c0 63 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  cess = false;...
366d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
366e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
366f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36700 20 70 43 75 72 73 6f 72 20 3d 20 41 6c 6c 6f 63   pCursor = Alloc
36710 61 74 65 43 75 72 73 6f 72 28 29 3b 0d 0a 0d 0a  ateCursor();....
36720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36730 69 66 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49  if (pCursor != I
36740 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
36750 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36770 20 20 20 20 63 75 72 73 6f 72 2e 4e 61 74 69 76      cursor.Nativ
36780 65 48 61 6e 64 6c 65 20 3d 20 70 43 75 72 73 6f  eHandle = pCurso
36790 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
367a0 20 20 20 20 20 20 20 20 63 75 72 73 6f 72 73 2e          cursors.
367b0 41 64 64 28 70 43 75 72 73 6f 72 2c 20 63 75 72  Add(pCursor, cur
367c0 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
367d0 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65             succe
367e0 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ss = true;..    
367f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36800 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
36810 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
36820 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
36830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36840 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20 26    if (!success &
36850 26 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49 6e  & (pCursor != In
36860 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
36870 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36890 20 20 20 20 46 72 65 65 43 75 72 73 6f 72 28 70      FreeCursor(p
368a0 43 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20  Cursor);..      
368b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43                pC
368c0 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  ursor = IntPtr.Z
368d0 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
368e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
368f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
36900 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 43 75        return pCu
36910 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rsor;..        }
36920 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
36930 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
36940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36980 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36990 20 20 20 23 72 65 67 69 6f 6e 20 46 75 6e 63 74     #region Funct
369a0 69 6f 6e 20 4c 6f 6f 6b 75 70 20 4d 65 74 68 6f  ion Lookup Metho
369b0 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
369c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
369d0 20 20 20 2f 2f 2f 20 44 65 74 65 72 69 6d 69 6e     /// Deterimin
369e0 65 73 20 74 68 65 20 6b 65 79 20 74 68 61 74 20  es the key that 
369f0 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 74  should be used t
36a00 6f 20 69 64 65 6e 74 69 66 79 20 61 6e 64 20 73  o identify and s
36a10 74 6f 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20  tore the..      
36a20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
36a30 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22  "SQLiteFunction"
36a40 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
36a50 6e 63 65 20 66 6f 72 20 74 68 65 20 76 69 72 74  nce for the virt
36a60 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
36a70 20 20 20 2f 2f 2f 20 28 69 2e 65 2e 20 74 6f 20     /// (i.e. to 
36a80 62 65 20 72 65 74 75 72 6e 65 64 20 76 69 61 20  be returned via 
36a90 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
36aa0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
36ab0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
36ac0 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f  xFindFunction" /
36ad0 3e 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20 20 20  > method)...    
36ae0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
36af0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36b00 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
36b10 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20  umentCount">..  
36b20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
36b30 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
36b40 73 20 74 6f 20 74 68 65 20 76 69 72 74 75 61 6c  s to the virtual
36b50 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e   table function.
36b60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36b70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36b80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
36b90 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
36ba0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
36bb0 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
36bc0 6c 65 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20  le function...  
36bd0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
36be0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
36bf0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e  <param name="fun
36c00 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20  ction">..       
36c10 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
36c20 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69  ef="SQLiteFuncti
36c30 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
36c40 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
36c50 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
36c60 2f 2f 2f 20 74 68 69 73 20 76 69 72 74 75 61 6c  /// this virtual
36c70 20 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 2e   table function.
36c80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
36c90 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
36ca0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
36cb0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73         /// The s
36cc0 74 72 69 6e 67 20 74 68 61 74 20 73 68 6f 75 6c  tring that shoul
36cd0 64 20 62 65 20 75 73 65 64 20 74 6f 20 69 64 65  d be used to ide
36ce0 6e 74 69 66 79 20 61 6e 64 20 73 74 6f 72 65 20  ntify and store 
36cf0 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
36d00 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66       /// table f
36d10 75 6e 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65  unction instance
36d20 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  .  This method c
36d30 61 6e 6e 6f 74 20 72 65 74 75 72 6e 20 6e 75 6c  annot return nul
36d40 6c 2e 20 20 49 66 20 6e 75 6c 6c 0d 0a 20 20 20  l.  If null..   
36d50 20 20 20 20 20 2f 2f 2f 20 69 73 20 72 65 74 75       /// is retu
36d60 72 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 20 6d  rned from this m
36d70 65 74 68 6f 64 2c 20 74 68 65 20 62 65 68 61 76  ethod, the behav
36d80 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
36d90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36da0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
36db0 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
36dc0 74 75 61 6c 20 73 74 72 69 6e 67 20 47 65 74 46  tual string GetF
36dd0 75 6e 63 74 69 6f 6e 4b 65 79 28 0d 0a 20 20 20  unctionKey(..   
36de0 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
36df0 75 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20 20  umentCount,..   
36e00 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
36e10 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  name,..         
36e20 20 20 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f     SQLiteFunctio
36e30 6e 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20  n function..    
36e40 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
36e50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
36e60 20 20 72 65 74 75 72 6e 20 48 65 6c 70 65 72 4d    return HelperM
36e70 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
36e80 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
36e90 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
36ea0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
36eb0 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
36ec0 20 20 20 20 20 22 7b 30 7d 3a 7b 31 7d 22 2c 20       "{0}:{1}", 
36ed0 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 6e  argumentCount, n
36ee0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ame);..        }
36ef0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
36f00 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
36f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f50 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36f60 20 20 20 23 72 65 67 69 6f 6e 20 54 61 62 6c 65     #region Table
36f70 20 44 65 63 6c 61 72 61 74 69 6f 6e 20 48 65 6c   Declaration Hel
36f80 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
36f90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
36fa0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
36fb0 41 74 74 65 6d 70 74 73 20 74 6f 20 64 65 63 6c  Attempts to decl
36fc0 61 72 65 20 74 68 65 20 73 63 68 65 6d 61 20 66  are the schema f
36fd0 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
36fe0 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 0d 0a  able using the..
36ff0 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63          /// spec
37000 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20 63  ified database c
37010 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
37020 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
37030 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
37040 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
37050 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20  nection">..     
37060 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
37070 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
37080 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  ection" /> objec
37090 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 75 73  t instance to us
370a0 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  e when..        
370b0 2f 2f 2f 20 64 65 63 6c 61 72 69 6e 67 20 74 68  /// declaring th
370c0 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68 65 20  e schema of the 
370d0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20  virtual table.  
370e0 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  This parameter m
370f0 61 79 20 6e 6f 74 0d 0a 20 20 20 20 20 20 20 20  ay not..        
37100 2f 2f 2f 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  /// be null...  
37110 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
37120 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
37130 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 71 6c  <param name="sql
37140 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37150 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  The string conta
37160 69 6e 69 6e 67 20 74 68 65 20 43 52 45 41 54 45  ining the CREATE
37170 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
37180 20 74 68 61 74 20 63 6f 6d 70 6c 65 74 65 6c 79   that completely
37190 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
371a0 73 63 72 69 62 65 73 20 74 68 65 20 73 63 68 65  scribes the sche
371b0 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  ma for the virtu
371c0 61 6c 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20  al table.  This 
371d0 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 6e 6f  parameter may no
371e0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62  t..        /// b
371f0 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  e null...       
37200 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37210 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37220 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
37230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f  .        /// Upo
37240 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
37250 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62  parameter must b
37260 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
37270 6e 74 61 69 6e 20 61 6e 20 65 72 72 6f 72 0d 0a  ntain an error..
37280 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
37290 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  age...        //
372a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
372b0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
372c0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
372d0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
372e0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
372f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
37300 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
37310 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
37320 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
37330 20 44 65 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a   DeclareTable(..
37340 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
37350 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
37360 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  nection,..      
37370 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 71 6c        string sql
37380 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
37390 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d  ef string error.
373a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
373b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
373c0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
373d0 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ction == null)..
373e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
373f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
37400 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20  rror = "invalid 
37410 63 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20  connection";..  
37420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
37430 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
37440 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
37450 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
37460 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
37470 42 61 73 65 20 73 71 6c 69 74 65 42 61 73 65 20  Base sqliteBase 
37480 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71  = connection._sq
37490 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
374a0 20 20 69 66 20 28 73 71 6c 69 74 65 42 61 73 65    if (sqliteBase
374b0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
374c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
374d0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
374e0 3d 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  = "connection ha
374f0 73 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65  s invalid handle
37500 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
37510 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
37520 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
37530 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
37540 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37550 69 66 20 28 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29  if (sql == null)
37560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37580 20 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69   error = "invali
37590 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 22  d SQL statement"
375a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
375b0 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
375c0 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
375d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
375e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
375f0 65 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73 65  eturn sqliteBase
37600 2e 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 54  .DeclareVirtualT
37610 61 62 6c 65 28 74 68 69 73 2c 20 73 71 6c 2c 20  able(this, sql, 
37620 72 65 66 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  ref error);..   
37630 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37640 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37650 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
376a0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
376b0 20 46 75 6e 63 74 69 6f 6e 20 44 65 63 6c 61 72   Function Declar
376c0 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65 74  ation Helper Met
376d0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
376e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
376f0 20 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74       /// Calls t
37700 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
37710 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e   core library in
37720 20 6f 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72   order to declar
37730 65 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  e a virtual..   
37740 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 66       /// table f
37750 75 6e 63 74 69 6f 6e 20 69 6e 20 72 65 73 70 6f  unction in respo
37760 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c 20 69 6e  nse to a call in
37770 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
37780 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
37790 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
377a0 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a  le.xCreate" />..
377b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c          /// or <
377c0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
377d0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
377e0 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75  onnect" /> virtu
377f0 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  al table..      
37800 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 73 2e 0d 0a    /// methods...
37810 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
37820 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
37830 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
37840 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
37850 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
37860 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
37870 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f  Connection" /> o
37880 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
37890 6f 20 75 73 65 20 77 68 65 6e 0d 0a 20 20 20 20  o use when..    
378a0 20 20 20 20 2f 2f 2f 20 64 65 63 6c 61 72 69 6e      /// declarin
378b0 67 20 74 68 65 20 73 63 68 65 6d 61 20 6f 66 20  g the schema of 
378c0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
378d0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
378e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
378f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
37900 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  e="argumentCount
37910 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
37920 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
37930 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66  guments to the f
37940 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 64 65  unction being de
37950 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 20 20 20  clared...       
37960 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37970 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37980 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
37990 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
379a0 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63  name of the func
379b0 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61  tion being decla
379c0 72 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  red...        //
379d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
379e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
379f0 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20  ame="error">..  
37a00 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73        /// Upon s
37a10 75 63 63 65 73 73 2c 20 74 68 65 20 63 6f 6e 74  uccess, the cont
37a20 65 6e 74 73 20 6f 66 20 74 68 69 73 20 70 61 72  ents of this par
37a30 61 6d 65 74 65 72 20 61 72 65 20 75 6e 64 65 66  ameter are undef
37a40 69 6e 65 64 2e 20 20 55 70 6f 6e 0d 0a 20 20 20  ined.  Upon..   
37a50 20 20 20 20 20 2f 2f 2f 20 66 61 69 6c 75 72 65       /// failure
37a60 2c 20 69 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74  , it should cont
37a70 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61  ain an appropria
37a80 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  te error message
37a90 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
37aa0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
37ab0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
37ac0 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
37ad0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
37ae0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
37af0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
37b00 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74  s>..        prot
37b10 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 53 51  ected virtual SQ
37b20 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65  LiteErrorCode De
37b30 63 6c 61 72 65 46 75 6e 63 74 69 6f 6e 28 0d 0a  clareFunction(..
37b40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
37b50 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
37b60 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  nection,..      
37b70 20 20 20 20 20 20 69 6e 74 20 61 72 67 75 6d 65        int argume
37b80 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20 20 20 20 20  ntCount,..      
37b90 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
37ba0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
37bb0 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72  ref string error
37bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
37bd0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
37be0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
37bf0 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d  ection == null).
37c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
37c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c20 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64  error = "invalid
37c30 20 63 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20   connection";.. 
37c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
37c50 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
37c60 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20  rCode.Error;..  
37c70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
37c80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
37c90 65 42 61 73 65 20 73 71 6c 69 74 65 42 61 73 65  eBase sqliteBase
37ca0 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73   = connection._s
37cb0 71 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ql;....         
37cc0 20 20 20 69 66 20 28 73 71 6c 69 74 65 42 61 73     if (sqliteBas
37cd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
37ce0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37cf0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
37d00 20 3d 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68   = "connection h
37d10 61 73 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c  as invalid handl
37d20 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
37d30 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
37d40 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
37d50 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
37d60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....