System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact cb91c4b17b46ebf239c22eccd9aa6c900506fdc0:


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 3b 0d 0a 75 73 69 6e 67 20 53  ctions;..using S
0140: 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e  ystem.Collection
0150: 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69 6e  s.Generic;..usin
0160: 67 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69  g System.Globali
0170: 7a 61 74 69 6f 6e 3b 0d 0a 0d 0a 23 72 65 67 69  zation;....#regi
0180: 6f 6e 20 4e 6f 6e 2d 47 65 6e 65 72 69 63 20 43  on Non-Generic C
0190: 6c 61 73 73 65 73 0d 0a 6e 61 6d 65 73 70 61 63  lasses..namespac
01a0: 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  e System.Data.SQ
01b0: 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20 20 23 72 65  Lite..{..    #re
01c0: 67 69 6f 6e 20 53 51 4c 69 74 65 56 69 72 74 75  gion SQLiteVirtu
01d0: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 45 6e 75  alTableCursorEnu
01e0: 6d 65 72 61 74 6f 72 20 43 6c 61 73 73 0d 0a 20  merator Class.. 
01f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0200: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63  ..    /// This c
0210: 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20  lass represents 
0220: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  a virtual table 
0230: 63 75 72 73 6f 72 20 74 6f 20 62 65 20 75 73 65  cursor to be use
0240: 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20  d with the..    
0250: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
0260: 51 4c 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65  QLiteModuleEnume
0270: 72 61 62 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e  rable" /> class.
0280: 20 20 49 74 20 69 73 20 6e 6f 74 20 73 65 61 6c    It is not seal
0290: 65 64 20 61 6e 64 20 6d 61 79 0d 0a 20 20 20 20  ed and may..    
02a0: 2f 2f 2f 20 62 65 20 75 73 65 64 20 61 73 20 74  /// be used as t
02b0: 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 6f  he base class fo
02c0: 72 20 61 6e 79 20 75 73 65 72 2d 64 65 66 69 6e  r any user-defin
02d0: 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
02e0: 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 2f 2f 2f   cursor..    ///
02f0: 20 63 6c 61 73 73 20 74 68 61 74 20 77 72 61 70   class that wrap
0300: 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
0310: 49 45 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20  IEnumerator" /> 
0320: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
0330: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0340: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
0350: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72   class SQLiteVir
0360: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 45  tualTableCursorE
0370: 6e 75 6d 65 72 61 74 6f 72 20 3a 0d 0a 20 20 20  numerator :..   
0380: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
0390: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
03a0: 72 2c 20 49 45 6e 75 6d 65 72 61 74 6f 72 20 2f  r, IEnumerator /
03b0: 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d  * NOT SEALED */.
03c0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
03d0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
03e0: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
03f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0400: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
0410: 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61  e cref="IEnumera
0420: 74 6f 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  tor" /> instance
0430: 20 70 72 6f 76 69 64 65 64 20 77 68 65 6e 20 74   provided when t
0440: 68 69 73 20 63 75 72 73 6f 72 0d 0a 20 20 20 20  his cursor..    
0450: 20 20 20 20 2f 2f 2f 20 77 61 73 20 63 72 65 61      /// was crea
0460: 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ted...        //
0470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0480: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 49 45        private IE
0490: 6e 75 6d 65 72 61 74 6f 72 20 65 6e 75 6d 65 72  numerator enumer
04a0: 61 74 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ator;....       
04b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
04c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
04d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
04e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
04f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0500: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0510: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
0520: 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62  his value will b
0530: 65 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 66 61  e non-zero if fa
0540: 6c 73 65 20 68 61 73 20 62 65 65 6e 20 72 65 74  lse has been ret
0550: 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  urned from the..
0560: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
0570: 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74   cref="IEnumerat
0580: 6f 72 2e 4d 6f 76 65 4e 65 78 74 22 20 2f 3e 20  or.MoveNext" /> 
0590: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
05a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
05b0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
05c0: 20 62 6f 6f 6c 20 65 6e 64 4f 66 45 6e 75 6d 65   bool endOfEnume
05d0: 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  rator;..        
05e0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
05f0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0640: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
0650: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
0660: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tors..        //
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 43 6f 6e 73 74 72 75       /// Constru
0690: 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  cts an instance 
06a0: 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d 0a  of this class...
06b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
06c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
06d0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
06e0: 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
06f0: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
0700: 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
0710: 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
0720: 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
0730: 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
0740: 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62  /// with this ob
0750: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
0760: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
0770: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
0780: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
0790: 6e 75 6d 65 72 61 74 6f 72 22 3e 0d 0a 20 20 20  numerator">..   
07a0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
07b0: 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61  e cref="IEnumera
07c0: 74 6f 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  tor" /> instance
07d0: 20 74 6f 20 65 78 70 6f 73 65 20 61 73 20 61 20   to expose as a 
07e0: 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20  virtual..       
07f0: 20 2f 2f 2f 20 74 61 62 6c 65 20 63 75 72 73 6f   /// table curso
0800: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
0810: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
0820: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56    public SQLiteV
0830: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
0840: 72 45 6e 75 6d 65 72 61 74 6f 72 28 0d 0a 20 20  rEnumerator(..  
0850: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
0860: 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
0870: 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
0880: 20 49 45 6e 75 6d 65 72 61 74 6f 72 20 65 6e 75   IEnumerator enu
0890: 6d 65 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20  merator..       
08a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
08b0: 20 20 20 20 3a 20 62 61 73 65 28 74 61 62 6c 65      : base(table
08c0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
08d0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 65            this.e
08e0: 6e 75 6d 65 72 61 74 6f 72 20 3d 20 65 6e 75 6d  numerator = enum
08f0: 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20  erator;..       
0900: 20 20 20 20 20 74 68 69 73 2e 65 6e 64 4f 66 45       this.endOfE
0910: 6e 75 6d 65 72 61 74 6f 72 20 3d 20 74 72 75 65  numerator = true
0920: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
0930: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
0940: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
09a0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65  region Public Me
09b0: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  mbers..        /
09c0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
09d0: 20 20 20 20 20 20 2f 2f 2f 20 41 64 76 61 6e 63        /// Advanc
09e0: 65 73 20 74 6f 20 74 68 65 20 6e 65 78 74 20 72  es to the next r
09f0: 6f 77 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  ow of the virtua
0a00: 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 75  l table cursor u
0a10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20  sing the..      
0a20: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
0a30: 22 49 45 6e 75 6d 65 72 61 74 6f 72 2e 4d 6f 76  "IEnumerator.Mov
0a40: 65 4e 65 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64  eNext" /> method
0a50: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
0a60: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
0a70: 49 45 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20  IEnumerator" /> 
0a80: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
0a90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0aa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0ab0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
0ac0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
0ad0: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 63 75 72  -zero if the cur
0ae0: 72 65 6e 74 20 72 6f 77 20 69 73 20 76 61 6c 69  rent row is vali
0af0: 64 3b 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  d; zero otherwis
0b00: 65 2e 20 20 49 66 20 7a 65 72 6f 20 69 73 0d 0a  e.  If zero is..
0b10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
0b20: 72 6e 65 64 2c 20 6e 6f 20 66 75 72 74 68 65 72  rned, no further
0b30: 20 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c 61   rows are availa
0b40: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
0b50: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
0b60: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
0b70: 74 75 61 6c 20 62 6f 6f 6c 20 4d 6f 76 65 4e 65  tual bool MoveNe
0b80: 78 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  xt()..        {.
0b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
0ba0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
0bb0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
0bc0: 43 6c 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  Closed();....   
0bd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6e 75           if (enu
0be0: 6d 65 72 61 74 6f 72 20 3d 3d 20 6e 75 6c 6c 29  merator == null)
0bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0c00: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
0c10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ...            e
0c20: 6e 64 4f 66 45 6e 75 6d 65 72 61 74 6f 72 20 3d  ndOfEnumerator =
0c30: 20 21 65 6e 75 6d 65 72 61 74 6f 72 2e 4d 6f 76   !enumerator.Mov
0c40: 65 4e 65 78 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  eNext();....    
0c50: 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6e 64          if (!end
0c60: 4f 66 45 6e 75 6d 65 72 61 74 6f 72 29 0d 0a 20  OfEnumerator).. 
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e                 N
0c80: 65 78 74 52 6f 77 49 6e 64 65 78 28 29 3b 0d 0a  extRowIndex();..
0c90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
0ca0: 74 75 72 6e 20 21 65 6e 64 4f 66 45 6e 75 6d 65  turn !endOfEnume
0cb0: 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  rator;..        
0cc0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d10: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
0d20: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0d30: 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
0d40: 6e 73 20 74 68 65 20 76 61 6c 75 65 20 66 6f 72  ns the value for
0d50: 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
0d60: 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20   of the virtual 
0d70: 74 61 62 6c 65 20 63 75 72 73 6f 72 0d 0a 20 20  table cursor..  
0d80: 20 20 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20        /// using 
0d90: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
0da0: 45 6e 75 6d 65 72 61 74 6f 72 2e 43 75 72 72 65  Enumerator.Curre
0db0: 6e 74 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20  nt" /> property 
0dc0: 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  of the..        
0dd0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
0de0: 45 6e 75 6d 65 72 61 74 6f 72 22 20 2f 3e 20 6f  Enumerator" /> o
0df0: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
0e00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
0e10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
0e20: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
0e30: 6f 62 6a 65 63 74 20 43 75 72 72 65 6e 74 0d 0a  object Current..
0e40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0e50: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
0e60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0e70: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
0e80: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
0e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
0ea0: 63 6b 43 6c 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  ckClosed();.... 
0eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
0ec0: 66 20 28 65 6e 75 6d 65 72 61 74 6f 72 20 3d 3d  f (enumerator ==
0ed0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
0ef0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
0f00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
0f10: 72 6e 20 65 6e 75 6d 65 72 61 74 6f 72 2e 43 75  rn enumerator.Cu
0f20: 72 72 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  rrent;..        
0f30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
0f40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
0f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f90: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
0fa0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0fb0: 20 20 20 20 20 20 2f 2f 2f 20 52 65 73 65 74 73        /// Resets
0fc0: 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
0fd0: 6c 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69  le cursor positi
0fe0: 6f 6e 2c 20 61 6c 73 6f 20 69 6e 76 61 6c 69 64  on, also invalid
0ff0: 61 74 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ating the..     
1000: 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 20 72     /// current r
1010: 6f 77 2c 20 75 73 69 6e 67 20 74 68 65 20 3c 73  ow, using the <s
1020: 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72  ee cref="IEnumer
1030: 61 74 6f 72 2e 52 65 73 65 74 22 20 2f 3e 20 6d  ator.Reset" /> m
1040: 65 74 68 6f 64 20 6f 66 0d 0a 20 20 20 20 20 20  ethod of..      
1050: 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
1060: 72 65 66 3d 22 49 45 6e 75 6d 65 72 61 74 6f 72  ref="IEnumerator
1070: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1080: 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ance...        /
1090: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10a0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69         public vi
10b0: 72 74 75 61 6c 20 76 6f 69 64 20 52 65 73 65 74  rtual void Reset
10c0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
10d0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
10e0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
10f0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 43 6c           CheckCl
1100: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
1110: 20 20 20 20 20 20 20 69 66 20 28 65 6e 75 6d 65         if (enume
1120: 72 61 74 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  rator == null)..
1130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1140: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
1150: 20 20 20 20 20 20 20 65 6e 75 6d 65 72 61 74 6f         enumerato
1160: 72 2e 52 65 73 65 74 28 29 3b 0d 0a 20 20 20 20  r.Reset();..    
1170: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1180: 20 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 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
11d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
11f0: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20  eturns non-zero 
1200: 69 66 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  if the end of th
1210: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
1220: 63 75 72 73 6f 72 20 68 61 73 20 62 65 65 6e 0d  cursor has been.
1230: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 65  .        /// see
1240: 6e 20 28 69 2e 65 2e 20 6e 6f 20 6d 6f 72 65 20  n (i.e. no more 
1250: 72 6f 77 73 20 61 72 65 20 61 76 61 69 6c 61 62  rows are availab
1260: 6c 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  le, including th
1270: 65 20 63 75 72 72 65 6e 74 20 6f 6e 65 29 2e 0d  e current one)..
1280: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
12a0: 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20   public virtual 
12b0: 62 6f 6f 6c 20 45 6e 64 4f 66 45 6e 75 6d 65 72  bool EndOfEnumer
12c0: 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ator..        {.
12d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
12e0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
12f0: 28 29 3b 20 43 68 65 63 6b 43 6c 6f 73 65 64 28  (); CheckClosed(
1300: 29 3b 20 72 65 74 75 72 6e 20 65 6e 64 4f 66 45  ); return endOfE
1310: 6e 75 6d 65 72 61 74 6f 72 3b 20 7d 0d 0a 20 20  numerator; }..  
1320: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1330: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1380: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1390: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
13a0: 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   Returns non-zer
13b0: 6f 20 69 66 20 74 68 65 20 76 69 72 74 75 61 6c  o if the virtual
13c0: 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 69 73   table cursor is
13d0: 20 6f 70 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20   open...        
13e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
1400: 69 72 74 75 61 6c 20 62 6f 6f 6c 20 49 73 4f 70  irtual bool IsOp
1410: 65 6e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  en..        {.. 
1420: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
1430: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
1440: 3b 20 72 65 74 75 72 6e 20 28 65 6e 75 6d 65 72  ; return (enumer
1450: 61 74 6f 72 20 21 3d 20 6e 75 6c 6c 29 3b 20 7d  ator != null); }
1460: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
1470: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
14d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
14e0: 20 2f 2f 2f 20 43 6c 6f 73 65 73 20 74 68 65 20   /// Closes the 
14f0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
1500: 72 73 6f 72 2e 20 20 54 68 69 73 20 6d 65 74 68  rsor.  This meth
1510: 6f 64 20 6d 75 73 74 20 6e 6f 74 20 74 68 72 6f  od must not thro
1520: 77 20 61 6e 79 0d 0a 20 20 20 20 20 20 20 20 2f  w any..        /
1530: 2f 2f 20 65 78 63 65 70 74 69 6f 6e 73 2e 0d 0a  // exceptions...
1540: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1550: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1560: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 76  public virtual v
1570: 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20  oid Close()..   
1580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1590: 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
15a0: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
15b0: 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 43 6c 6f       // CheckClo
15c0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
15d0: 20 20 20 20 20 20 69 66 20 28 65 6e 75 6d 65 72        if (enumer
15e0: 61 74 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ator != null).. 
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1600: 6e 75 6d 65 72 61 74 6f 72 20 3d 20 6e 75 6c 6c  numerator = null
1610: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
1620: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1670: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1680: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1690: 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20    /// Throws an 
16a0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 76 61 6c  <see cref="Inval
16b0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
16c0: 74 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 65 20  tion" /> if the 
16d0: 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20 20  virtual..       
16e0: 20 2f 2f 2f 20 74 61 62 6c 65 20 63 75 72 73 6f   /// table curso
16f0: 72 20 68 61 73 20 62 65 65 6e 20 63 6c 6f 73 65  r has been close
1700: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1710: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1720: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
1730: 61 6c 20 76 6f 69 64 20 43 68 65 63 6b 43 6c 6f  al void CheckClo
1740: 73 65 64 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  sed()..        {
1750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
1760: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
1770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1780: 20 28 21 49 73 4f 70 65 6e 29 0d 0a 20 20 20 20   (!IsOpen)..    
1790: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
17b0: 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
17c0: 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d  ationException(.
17d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17e0: 20 20 20 20 20 22 76 69 72 74 75 61 6c 20 74 61       "virtual ta
17f0: 62 6c 65 20 63 75 72 73 6f 72 20 69 73 20 63 6c  ble cursor is cl
1800: 6f 73 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20  osed");..       
1810: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1820: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1830: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1840: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1880: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1890: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
18a0: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
18b0: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
18c0: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
18d0: 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
18e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1900: 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
1910: 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
1920: 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
1930: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
1940: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
1950: 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
1960: 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
1970: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1980: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1990: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
19a0: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
19b0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
19c0: 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
19d0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
19e0: 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
19f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1a10: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
1a20: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
1a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a40: 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
1a50: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
1a60: 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 29  ursorEnumerator)
1a70: 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
1a80: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
1a90: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1aa0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1af0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1b00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1b10: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
1b20: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
1b30: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
1b40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b50: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1b60: 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
1b70: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
1b80: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
1b90: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
1ba0: 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
1bb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1bc0: 65 65 20 63 72 65 66 3d 22 49 44 69 73 70 6f 73  ee cref="IDispos
1bd0: 61 62 6c 65 2e 44 69 73 70 6f 73 65 22 20 2f 3e  able.Dispose" />
1be0: 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
1bf0: 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
1c00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
1c10: 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
1c20: 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
1c30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1c40: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
1c50: 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
1c60: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
1c70: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
1c80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c90: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1ca0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
1cc0: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
1cd0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf0: 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
1d00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1d10: 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
1d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d30: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
1d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d70: 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
1d80: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
1d90: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db0: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
1de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df0: 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
1e00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
1e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e30: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1e40: 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
1e50: 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
1e60: 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 20 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 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec0: 20 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20   Close();..     
1ed0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ee0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ef0: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1f10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f20: 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69   base.Dispose(di
1f30: 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  sposing);....   
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f60: 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74   // NOTE: Everyt
1f70: 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66  hing should be f
1f80: 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74  ully disposed at
1f90: 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20   this point...  
1fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fc0: 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
1fd0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1fe0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
1ff0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2000: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
2010: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2070: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
2080: 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61 62 6c 65  ModuleEnumerable
2090: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
20a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
20b0: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 69 6d  // This class im
20c0: 70 6c 65 6d 65 6e 74 73 20 61 20 76 69 72 74 75  plements a virtu
20d0: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
20e0: 74 68 61 74 20 65 78 70 6f 73 65 73 20 61 6e 0d  that exposes an.
20f0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
2100: 65 66 3d 22 49 45 6e 75 6d 65 72 61 62 6c 65 22  ef="IEnumerable"
2110: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
2120: 6e 63 65 20 61 73 20 61 20 72 65 61 64 2d 6f 6e  nce as a read-on
2130: 6c 79 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20  ly virtual..    
2140: 2f 2f 2f 20 74 61 62 6c 65 2e 20 20 49 74 20 69  /// table.  It i
2150: 73 20 6e 6f 74 20 73 65 61 6c 65 64 20 61 6e 64  s not sealed and
2160: 20 6d 61 79 20 62 65 20 75 73 65 64 20 61 73 20   may be used as 
2170: 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66  the base class f
2180: 6f 72 20 61 6e 79 0d 0a 20 20 20 20 2f 2f 2f 20  or any..    /// 
2190: 75 73 65 72 2d 64 65 66 69 6e 65 64 20 76 69 72  user-defined vir
21a0: 74 75 61 6c 20 74 61 62 6c 65 20 63 6c 61 73 73  tual table class
21b0: 20 74 68 61 74 20 77 72 61 70 73 20 61 6e 0d 0a   that wraps an..
21c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
21d0: 66 3d 22 49 45 6e 75 6d 65 72 61 62 6c 65 22 20  f="IEnumerable" 
21e0: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
21f0: 63 65 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  ce.  The followi
2200: 6e 67 20 73 68 6f 72 74 0d 0a 20 20 20 20 2f 2f  ng short..    //
2210: 2f 20 65 78 61 6d 70 6c 65 20 73 68 6f 77 73 20  / example shows 
2220: 69 74 20 62 65 69 6e 67 20 75 73 65 64 20 74 6f  it being used to
2230: 20 74 72 65 61 74 20 61 6e 20 61 72 72 61 79 20   treat an array 
2240: 6f 66 20 73 74 72 69 6e 67 73 20 61 73 20 61 20  of strings as a 
2250: 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 64  table..    /// d
2260: 61 74 61 20 73 6f 75 72 63 65 3a 0d 0a 20 20 20  ata source:..   
2270: 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20   /// <code>..   
2280: 20 2f 2f 2f 20 20 20 70 75 62 6c 69 63 20 73 74   ///   public st
2290: 61 74 69 63 20 63 6c 61 73 73 20 53 61 6d 70 6c  atic class Sampl
22a0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 7b 0d 0a  e..    ///   {..
22b0: 20 20 20 20 2f 2f 2f 20 20 20 20 20 70 75 62 6c      ///     publ
22c0: 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 4d  ic static void M
22d0: 61 69 6e 28 29 0d 0a 20 20 20 20 2f 2f 2f 20 20  ain()..    ///  
22e0: 20 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 20 20     {..    ///   
22f0: 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74      using (SQLit
2300: 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
2310: 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c  ection = new SQL
2320: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d 0a  iteConnection(..
2330: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
2340: 20 20 22 44 61 74 61 20 53 6f 75 72 63 65 3d 3a    "Data Source=:
2350: 6d 65 6d 6f 72 79 3a 3b 22 29 29 0d 0a 20 20 20  memory:;"))..   
2360: 20 2f 2f 2f 20 20 20 20 20 20 20 7b 0d 0a 20 20   ///       {..  
2370: 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 63 6f    ///         co
2380: 6e 6e 65 63 74 69 6f 6e 2e 4f 70 65 6e 28 29 3b  nnection.Open();
2390: 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f  ..    ///..    /
23a0: 2f 2f 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65  //         conne
23b0: 63 74 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64 75  ction.CreateModu
23c0: 6c 65 28 6e 65 77 20 53 51 4c 69 74 65 4d 6f 64  le(new SQLiteMod
23d0: 75 6c 65 45 6e 75 6d 65 72 61 62 6c 65 28 0d 0a  uleEnumerable(..
23e0: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
23f0: 20 20 22 73 61 6d 70 6c 65 4d 6f 64 75 6c 65 22    "sampleModule"
2400: 2c 20 6e 65 77 20 73 74 72 69 6e 67 5b 5d 20 7b  , new string[] {
2410: 20 22 6f 6e 65 22 2c 20 22 74 77 6f 22 2c 20 22   "one", "two", "
2420: 74 68 72 65 65 22 20 7d 29 29 3b 0d 0a 20 20 20  three" }));..   
2430: 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 20 20   ///..    ///   
2440: 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c        using (SQL
2450: 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f 6d 6d 61  iteCommand comma
2460: 6e 64 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  nd = connection.
2470: 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 29 29  CreateCommand())
2480: 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20  ..    ///       
2490: 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20    {..    ///    
24a0: 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 2e 43         command.C
24b0: 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 0d 0a 20 20  ommandText =..  
24c0: 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
24d0: 20 20 20 20 22 43 52 45 41 54 45 20 56 49 52 54      "CREATE VIRT
24e0: 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53 49  UAL TABLE t1 USI
24f0: 4e 47 20 73 61 6d 70 6c 65 4d 6f 64 75 6c 65 3b  NG sampleModule;
2500: 22 3b 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20  ";..    ///..   
2510: 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 63   ///           c
2520: 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f  ommand.ExecuteNo
2530: 6e 51 75 65 72 79 28 29 3b 0d 0a 20 20 20 20 2f  nQuery();..    /
2540: 2f 2f 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  //         }..  
2550: 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 20    ///..    ///  
2560: 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51         using (SQ
2570: 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f 6d 6d  LiteCommand comm
2580: 61 6e 64 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  and = connection
2590: 2e 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 29  .CreateCommand()
25a0: 29 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20  )..    ///      
25b0: 20 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 20 20     {..    ///   
25c0: 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 2e          command.
25d0: 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20 22 53  CommandText = "S
25e0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
25f0: 22 3b 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20  ";..    ///..   
2600: 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20 75   ///           u
2610: 73 69 6e 67 20 28 53 51 4c 69 74 65 44 61 74 61  sing (SQLiteData
2620: 52 65 61 64 65 72 20 64 61 74 61 52 65 61 64 65  Reader dataReade
2630: 72 20 3d 20 63 6f 6d 6d 61 6e 64 2e 45 78 65 63  r = command.Exec
2640: 75 74 65 52 65 61 64 65 72 28 29 29 0d 0a 20 20  uteReader())..  
2650: 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 20    ///           
2660: 7b 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20  {..    ///      
2670: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 64 61         while (da
2680: 74 61 52 65 61 64 65 72 2e 52 65 61 64 28 29 29  taReader.Read())
2690: 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20  ..    ///       
26a0: 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e          Console.
26b0: 57 72 69 74 65 4c 69 6e 65 28 64 61 74 61 52 65  WriteLine(dataRe
26c0: 61 64 65 72 5b 30 5d 2e 54 6f 53 74 72 69 6e 67  ader[0].ToString
26d0: 28 29 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 20 20  ());..    ///   
26e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 2f          }..    /
26f0: 2f 2f 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  //         }..  
2700: 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 20    ///..    ///  
2710: 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f         connectio
2720: 6e 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20  n.Close();..    
2730: 2f 2f 2f 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ///       }..   
2740: 20 2f 2f 2f 20 20 20 20 20 7d 0d 0a 20 20 20 20   ///     }..    
2750: 2f 2f 2f 20 20 20 7d 0d 0a 20 20 20 20 2f 2f 2f  ///   }..    ///
2760: 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 2f 2f   </code>..    //
2770: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2780: 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53    public class S
2790: 51 4c 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65  QLiteModuleEnume
27a0: 72 61 62 6c 65 20 3a 20 53 51 4c 69 74 65 4d 6f  rable : SQLiteMo
27b0: 64 75 6c 65 43 6f 6d 6d 6f 6e 20 2f 2a 20 4e 4f  duleCommon /* NO
27c0: 54 20 53 45 41 4c 45 44 20 2a 2f 0d 0a 20 20 20  T SEALED */..   
27d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
27e0: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
27f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
2800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
2810: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
2820: 65 66 3d 22 49 45 6e 75 6d 65 72 61 62 6c 65 22  ef="IEnumerable"
2830: 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e   /> instance con
2840: 74 61 69 6e 69 6e 67 20 74 68 65 20 62 61 63 6b  taining the back
2850: 69 6e 67 20 64 61 74 61 0d 0a 20 20 20 20 20 20  ing data..      
2860: 20 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 76 69    /// for the vi
2870: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
2880: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
2890: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
28a0: 69 76 61 74 65 20 49 45 6e 75 6d 65 72 61 62 6c  ivate IEnumerabl
28b0: 65 20 65 6e 75 6d 65 72 61 62 6c 65 3b 0d 0a 0d  e enumerable;...
28c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
28d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2910: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
2920: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2930: 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
2940: 69 66 20 64 69 66 66 65 72 65 6e 74 20 6f 62 6a  if different obj
2950: 65 63 74 20 69 6e 73 74 61 6e 63 65 73 20 77 69  ect instances wi
2960: 74 68 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75  th the same valu
2970: 65 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20  e should..      
2980: 20 20 2f 2f 2f 20 67 65 6e 65 72 61 74 65 20 64    /// generate d
2990: 69 66 66 65 72 65 6e 74 20 72 6f 77 20 69 64 65  ifferent row ide
29a0: 6e 74 69 66 69 65 72 73 2c 20 77 68 65 72 65 20  ntifiers, where 
29b0: 61 70 70 6c 69 63 61 62 6c 65 2e 20 20 54 68 69  applicable.  Thi
29c0: 73 20 68 61 73 20 6e 6f 0d 0a 20 20 20 20 20 20  s has no..      
29d0: 20 20 2f 2f 2f 20 65 66 66 65 63 74 20 6f 6e 20    /// effect on 
29e0: 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74  the .NET Compact
29f0: 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   Framework...   
2a00: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a10: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ry>..        pri
2a20: 76 61 74 65 20 62 6f 6f 6c 20 6f 62 6a 65 63 74  vate bool object
2a30: 49 64 65 6e 74 69 74 79 3b 0d 0a 20 20 20 20 20  Identity;..     
2a40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2a50: 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
2aa0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
2ab0: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
2ac0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
2ad0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2ae0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
2af0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
2b00: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
2b10: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2b20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2b30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2b40: 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
2b50: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
2b60: 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 20   of the module. 
2b70: 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
2b80: 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d  cannot be null..
2b90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
2ba0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
2bb0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2bc0: 65 6e 75 6d 65 72 61 62 6c 65 22 3e 0d 0a 20 20  enumerable">..  
2bd0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
2be0: 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72  ee cref="IEnumer
2bf0: 61 62 6c 65 22 20 2f 3e 20 69 6e 73 74 61 6e 63  able" /> instanc
2c00: 65 20 74 6f 20 65 78 70 6f 73 65 20 61 73 20 61  e to expose as a
2c10: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
2c20: 20 20 2f 2f 2f 20 74 61 62 6c 65 2e 20 20 54 68    /// table.  Th
2c30: 69 73 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e  is parameter can
2c40: 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20  not be null...  
2c50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2c60: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
2c70: 69 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 45  ic SQLiteModuleE
2c80: 6e 75 6d 65 72 61 62 6c 65 28 0d 0a 20 20 20 20  numerable(..    
2c90: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
2ca0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
2cb0: 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 20 65 6e    IEnumerable en
2cc0: 75 6d 65 72 61 62 6c 65 0d 0a 20 20 20 20 20 20  umerable..      
2cd0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2ce0: 20 20 20 20 20 3a 20 74 68 69 73 28 6e 61 6d 65       : this(name
2cf0: 2c 20 65 6e 75 6d 65 72 61 62 6c 65 2c 20 66 61  , enumerable, fa
2d00: 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lse)..        {.
2d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
2d20: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
2d30: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2d40: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d90: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2da0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
2db0: 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
2dc0: 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63  stance of this c
2dd0: 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  lass...        /
2de0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2df0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
2e00: 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a  m name="name">..
2e10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
2e20: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 75  name of the modu
2e30: 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65  le.  This parame
2e40: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75  ter cannot be nu
2e50: 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ll...        ///
2e60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
2e70: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2e80: 6d 65 3d 22 65 6e 75 6d 65 72 61 62 6c 65 22 3e  me="enumerable">
2e90: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2ea0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45 6e  e <see cref="IEn
2eb0: 75 6d 65 72 61 62 6c 65 22 20 2f 3e 20 69 6e 73  umerable" /> ins
2ec0: 74 61 6e 63 65 20 74 6f 20 65 78 70 6f 73 65 20  tance to expose 
2ed0: 61 73 20 61 20 76 69 72 74 75 61 6c 0d 0a 20 20  as a virtual..  
2ee0: 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 2e        /// table.
2ef0: 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72    This parameter
2f00: 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e   cannot be null.
2f10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2f20: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2f30: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2f40: 22 6f 62 6a 65 63 74 49 64 65 6e 74 69 74 79 22  "objectIdentity"
2f50: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
2f60: 6f 6e 2d 7a 65 72 6f 20 69 66 20 64 69 66 66 65  on-zero if diffe
2f70: 72 65 6e 74 20 6f 62 6a 65 63 74 20 69 6e 73 74  rent object inst
2f80: 61 6e 63 65 73 20 77 69 74 68 20 74 68 65 20 73  ances with the s
2f90: 61 6d 65 20 76 61 6c 75 65 20 73 68 6f 75 6c 64  ame value should
2fa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 67 65  ..        /// ge
2fb0: 6e 65 72 61 74 65 20 64 69 66 66 65 72 65 6e 74  nerate different
2fc0: 20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 73   row identifiers
2fd0: 2c 20 77 68 65 72 65 20 61 70 70 6c 69 63 61 62  , where applicab
2fe0: 6c 65 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 20  le.  This..     
2ff0: 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
3000: 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
3010: 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61  n the .NET Compa
3020: 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20  ct Framework... 
3030: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
3040: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  am>..        pub
3050: 6c 69 63 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65  lic SQLiteModule
3060: 45 6e 75 6d 65 72 61 62 6c 65 28 0d 0a 20 20 20  Enumerable(..   
3070: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
3080: 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  name,..         
3090: 20 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 20 65     IEnumerable e
30a0: 6e 75 6d 65 72 61 62 6c 65 2c 0d 0a 20 20 20 20  numerable,..    
30b0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6f 62 6a          bool obj
30c0: 65 63 74 49 64 65 6e 74 69 74 79 0d 0a 20 20 20  ectIdentity..   
30d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
30e0: 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e          : base(n
30f0: 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ame)..        {.
3100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3110: 28 65 6e 75 6d 65 72 61 62 6c 65 20 3d 3d 20 6e  (enumerable == n
3120: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3130: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
3140: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
3150: 70 74 69 6f 6e 28 22 65 6e 75 6d 65 72 61 62 6c  ption("enumerabl
3160: 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e");....        
3170: 20 20 20 20 74 68 69 73 2e 65 6e 75 6d 65 72 61      this.enumera
3180: 62 6c 65 20 3d 20 65 6e 75 6d 65 72 61 62 6c 65  ble = enumerable
3190: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
31a0: 68 69 73 2e 6f 62 6a 65 63 74 49 64 65 6e 74 69  his.objectIdenti
31b0: 74 79 20 3d 20 6f 62 6a 65 63 74 49 64 65 6e 74  ty = objectIdent
31c0: 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ity;..        }.
31d0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
31e0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3240: 20 20 23 72 65 67 69 6f 6e 20 50 72 6f 74 65 63    #region Protec
3250: 74 65 64 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ted Methods..   
3260: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3270: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
3280: 53 65 74 73 20 74 68 65 20 74 61 62 6c 65 20 65  Sets the table e
3290: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74 6f 20  rror message to 
32a0: 6f 6e 65 20 74 68 61 74 20 69 6e 64 69 63 61 74  one that indicat
32b0: 65 73 20 74 68 65 20 76 69 72 74 75 61 6c 0d 0a  es the virtual..
32c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c          /// tabl
32d0: 65 20 63 75 72 73 6f 72 20 68 61 73 20 6e 6f 20  e cursor has no 
32e0: 63 75 72 72 65 6e 74 20 72 6f 77 2e 0d 0a 20 20  current row...  
32f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
3300: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
3310: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
3320: 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
3330: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
3340: 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
3350: 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
3360: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
3370: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
3380: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
3390: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
33a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
33b0: 76 61 6c 75 65 20 6f 66 20 3c 73 65 65 20 63 72  value of <see cr
33c0: 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43  ef="SQLiteErrorC
33d0: 6f 64 65 2e 45 72 72 6f 72 22 20 2f 3e 2e 0d 0a  ode.Error" />...
33e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
33f0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
3400: 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
3410: 6c 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  l SQLiteErrorCod
3420: 65 20 43 75 72 73 6f 72 45 6e 64 4f 66 45 6e 75  e CursorEndOfEnu
3430: 6d 65 72 61 74 6f 72 45 72 72 6f 72 28 0d 0a 20  meratorError(.. 
3440: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
3450: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
3460: 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20 20 20 20  sor cursor..    
3470: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3480: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3490: 20 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72    SetCursorError
34a0: 28 63 75 72 73 6f 72 2c 20 22 61 6c 72 65 61 64  (cursor, "alread
34b0: 79 20 68 69 74 20 65 6e 64 20 6f 66 20 65 6e 75  y hit end of enu
34c0: 6d 65 72 61 74 6f 72 22 29 3b 0d 0a 20 20 20 20  merator");..    
34d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
34e0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
34f0: 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rror;..        }
3500: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
3510: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
3520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3560: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3570: 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
3580: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 20  teManagedModule 
3590: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
35a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
35b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
35c0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
35d0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
35e0: 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 6d  ule.Create" /> m
35f0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
3600: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3610: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
3620: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
3630: 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ion">..        /
3640: 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
3650: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
3660: 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74  agedModule.Creat
3670: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
3680: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
3690: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
36a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
36b0: 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
36c0: 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
36d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
36e0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
36f0: 2e 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  .Create" /> meth
3700: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
3710: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
3720: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3730: 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73 22 3e 0d  me="arguments">.
3740: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65  .        /// See
3750: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
3760: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
3770: 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
3780: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
3790: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
37a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
37b0: 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
37c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65  .        /// See
37d0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
37e0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
37f0: 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
3800: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
3810: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
3820: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
3830: 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
3840: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65  .        /// See
3850: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
3860: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
3870: 64 75 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20  dule.Create" /> 
3880: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
3890: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
38a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
38b0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
38c0: 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
38d0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
38e0: 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65  gedModule.Create
38f0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
3900: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3910: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3920: 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 53 51  blic override SQ
3930: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72  LiteErrorCode Cr
3940: 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  eate(..         
3950: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
3960: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  ion connection,.
3970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
3980: 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c  Ptr pClientData,
3990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
39a0: 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73  ring[] arguments
39b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
39c0: 65 66 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  ef SQLiteVirtual
39d0: 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20  Table table,..  
39e0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
39f0: 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
3a00: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3a10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3a20: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
3a30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
3a40: 20 20 69 66 20 28 44 65 63 6c 61 72 65 54 61 62    if (DeclareTab
3a50: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
3a60: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
3a70: 69 6f 6e 2c 20 47 65 74 53 71 6c 46 6f 72 44 65  ion, GetSqlForDe
3a80: 63 6c 61 72 65 54 61 62 6c 65 28 29 2c 0d 0a 20  clareTable(),.. 
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3aa0: 20 20 20 72 65 66 20 65 72 72 6f 72 29 20 3d 3d     ref error) ==
3ab0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
3ac0: 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok)..          
3ad0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3ae0: 20 20 20 20 20 74 61 62 6c 65 20 3d 20 6e 65 77       table = new
3af0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
3b00: 62 6c 65 28 61 72 67 75 6d 65 6e 74 73 29 3b 0d  ble(arguments);.
3b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b20: 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
3b30: 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20  rorCode.Ok;..   
3b40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3b50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3b60: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
3b70: 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20  .Error;..       
3b80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
3b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bd0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3be0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3bf0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
3c00: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
3c10: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
3c20: 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
3c30: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
3c40: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3c50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
3c60: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
3c70: 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
3c80: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
3c90: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
3ca0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e  nagedModule.Conn
3cb0: 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
3cc0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
3cd0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
3ce0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
3cf0: 70 43 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20  pClientData">.. 
3d00: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
3d10: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
3d20: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
3d30: 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  le.Connect" /> m
3d40: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
3d50: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
3d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
3d70: 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 73   name="arguments
3d80: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
3d90: 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
3da0: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
3db0: 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22  dModule.Connect"
3dc0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
3dd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
3de0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
3df0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c  param name="tabl
3e00: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
3e10: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
3e20: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
3e30: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74  edModule.Connect
3e40: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
3e50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
3e60: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
3e70: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
3e80: 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or">..        //
3e90: 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
3ea0: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
3eb0: 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63  gedModule.Connec
3ec0: 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
3ed0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
3ee0: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
3ef0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3f00: 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
3f10: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
3f20: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
3f30: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68  Connect" /> meth
3f40: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
3f50: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
3f60: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
3f70: 72 69 64 65 20 53 51 4c 69 74 65 45 72 72 6f 72  ride SQLiteError
3f80: 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d 0a 20  Code Connect(.. 
3f90: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
3fa0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
3fb0: 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ection,..       
3fc0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 6c 69       IntPtr pCli
3fd0: 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20 20 20  entData,..      
3fe0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
3ff0: 72 67 75 6d 65 6e 74 73 2c 0d 0a 20 20 20 20 20  rguments,..     
4000: 20 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74         ref SQLit
4010: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
4020: 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
4030: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
4040: 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
4050: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
4060: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
4070: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
4080: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44 65            if (De
4090: 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a 20 20 20  clareTable(..   
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 47 65 74   connection, Get
40c0: 53 71 6c 46 6f 72 44 65 63 6c 61 72 65 54 61 62  SqlForDeclareTab
40d0: 6c 65 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  le(),..         
40e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 65             ref e
40f0: 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65 45  rror) == SQLiteE
4100: 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
4110: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
4130: 6c 65 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 56  le = new SQLiteV
4140: 69 72 74 75 61 6c 54 61 62 6c 65 28 61 72 67 75  irtualTable(argu
4150: 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 20 20 20  ments);..       
4160: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
4170: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
4180: 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
4190: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
41a0: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
41b0: 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d  rrorCode.Error;.
41c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
41d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
41e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
4220: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
4230: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4240: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
4250: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
4260: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
4270: 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
4280: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4290: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
42a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
42b0: 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20  me="table">..   
42c0: 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
42d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
42e0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
42f0: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  .BestIndex" /> m
4300: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
4310: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4320: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
4330: 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a   name="index">..
4340: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
4350: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
4360: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
4370: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
4380: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
4390: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
43a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
43b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
43c0: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
43d0: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
43e0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
43f0: 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
4400: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4410: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
4420: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
4430: 64 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  de SQLiteErrorCo
4440: 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  de BestIndex(.. 
4450: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
4460: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
4470: 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
4480: 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e    SQLiteIndex in
4490: 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
44a0: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
44b0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
44c0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
44d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
44e0: 74 61 62 6c 65 2e 42 65 73 74 49 6e 64 65 78 28  table.BestIndex(
44f0: 69 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  index))..       
4500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4510: 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
4520: 45 72 72 6f 72 28 74 61 62 6c 65 2c 20 48 65 6c  Error(table, Hel
4530: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
4540: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
4550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
4560: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
4570: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
4580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
4590: 66 61 69 6c 65 64 20 74 6f 20 73 65 6c 65 63 74  failed to select
45a0: 20 62 65 73 74 20 69 6e 64 65 78 20 66 6f 72 20   best index for 
45b0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 5c 22  virtual table \"
45c0: 7b 30 7d 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20  {0}\"",..       
45d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
45e0: 6c 65 2e 54 61 62 6c 65 4e 61 6d 65 29 29 3b 0d  le.TableName));.
45f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4600: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
4610: 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
4620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
4630: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
4640: 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
4650: 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
4660: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
4670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
46b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
46c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
46d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
46e0: 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
46f0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
4700: 6f 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65 63 74  odule.Disconnect
4710: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
4720: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
4730: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
4740: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
4750: 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
4760: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
4770: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
4780: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 69 73 63  nagedModule.Disc
4790: 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
47a0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
47b0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
47c0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
47d0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65  .        /// See
47e0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
47f0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
4800: 64 75 6c 65 2e 44 69 73 63 6f 6e 6e 65 63 74 22  dule.Disconnect"
4810: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
4820: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
4830: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
4840: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 53 51 4c  lic override SQL
4850: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 69 73  iteErrorCode Dis
4860: 63 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20  connect(..      
4870: 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
4880: 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d 0a  ualTable table..
4890: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
48a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
48b0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
48c0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
48d0: 20 20 20 20 20 20 74 61 62 6c 65 2e 44 69 73 70        table.Disp
48e0: 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
48f0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
4900: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a  eErrorCode.Ok;..
4910: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4920: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4970: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4980: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4990: 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
49a0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
49b0: 61 67 65 64 4d 6f 64 75 6c 65 2e 44 65 73 74 72  agedModule.Destr
49c0: 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  oy" /> method...
49d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
49e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
49f0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4a00: 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
4a10: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
4a20: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
4a30: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 44 65  ManagedModule.De
4a40: 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
4a50: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4a60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
4a70: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4a80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
4a90: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
4aa0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
4ab0: 75 6c 65 2e 44 65 73 74 72 6f 79 22 20 2f 3e 20  ule.Destroy" /> 
4ac0: 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
4ad0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
4ae0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
4af0: 6f 76 65 72 72 69 64 65 20 53 51 4c 69 74 65 45  override SQLiteE
4b00: 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79  rrorCode Destroy
4b10: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
4b20: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
4b30: 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  e table..       
4b40: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
4b50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
4b60: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
4b70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
4b80: 61 62 6c 65 2e 44 69 73 70 6f 73 65 28 29 3b 0d  able.Dispose();.
4b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4ba0: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
4bb0: 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
4bc0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
4c20: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
4c30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
4c40: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
4c50: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
4c60: 75 6c 65 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  ule.Open" /> met
4c70: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
4c80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4c90: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
4ca0: 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
4cb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
4cc0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
4cd0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
4ce0: 75 6c 65 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  ule.Open" /> met
4cf0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
4d00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4d10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4d20: 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
4d30: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
4d40: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
4d50: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
4d60: 6c 65 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68  le.Open" /> meth
4d70: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
4d80: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
4d90: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4da0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
4db0: 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
4dc0: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
4dd0: 6f 64 75 6c 65 2e 4f 70 65 6e 22 20 2f 3e 20 6d  odule.Open" /> m
4de0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
4df0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
4e00: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
4e10: 76 65 72 72 69 64 65 20 53 51 4c 69 74 65 45 72  verride SQLiteEr
4e20: 72 6f 72 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20  rorCode Open(.. 
4e30: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
4e40: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
4e50: 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
4e60: 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
4e70: 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
4e80: 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
4e90: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
4ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
4eb0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
4ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72  .            cur
4ed0: 73 6f 72 20 3d 20 6e 65 77 20 53 51 4c 69 74 65  sor = new SQLite
4ee0: 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
4ef0: 6f 72 45 6e 75 6d 65 72 61 74 6f 72 28 0d 0a 20  orEnumerator(.. 
4f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
4f10: 61 62 6c 65 2c 20 65 6e 75 6d 65 72 61 62 6c 65  able, enumerable
4f20: 2e 47 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 29  .GetEnumerator()
4f30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
4f40: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
4f50: 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20  rrorCode.Ok;..  
4f60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4f70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4fc0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
4fd0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
4fe0: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
4ff0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
5000: 65 64 4d 6f 64 75 6c 65 2e 43 6c 6f 73 65 22 20  edModule.Close" 
5010: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
5020: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5030: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
5040: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
5050: 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
5060: 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
5070: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
5080: 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6c 6f 73 65  agedModule.Close
5090: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
50a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
50b0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
50c0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
50d0: 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
50e0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
50f0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
5100: 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
5110: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
5120: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
5130: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
5140: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
5150: 65 20 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20  e Close(..      
5160: 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
5170: 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
5180: 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
5190: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
51a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
51b0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
51c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
51d0: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
51e0: 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 20  ursorEnumerator 
51f0: 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73 6f 72  enumeratorCursor
5200: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
5210: 20 20 20 20 63 75 72 73 6f 72 20 61 73 20 53 51      cursor as SQ
5220: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
5230: 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72  CursorEnumerator
5240: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
5250: 20 69 66 20 28 65 6e 75 6d 65 72 61 74 6f 72 43   if (enumeratorC
5260: 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ursor == null)..
5270: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5290: 65 74 75 72 6e 20 43 75 72 73 6f 72 54 79 70 65  eturn CursorType
52a0: 4d 69 73 6d 61 74 63 68 45 72 72 6f 72 28 63 75  MismatchError(cu
52b0: 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rsor,..         
52c0: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
52d0: 66 28 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  f(SQLiteVirtualT
52e0: 61 62 6c 65 43 75 72 73 6f 72 45 6e 75 6d 65 72  ableCursorEnumer
52f0: 61 74 6f 72 29 29 3b 0d 0a 20 20 20 20 20 20 20  ator));..       
5300: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5310: 20 20 20 20 20 20 65 6e 75 6d 65 72 61 74 6f 72        enumerator
5320: 43 75 72 73 6f 72 2e 43 6c 6f 73 65 28 29 3b 0d  Cursor.Close();.
5330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
5340: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
5350: 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
5360: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
53c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
53d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
53e0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
53f0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5400: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ule.Filter" /> m
5410: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
5420: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5430: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
5440: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
5450: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
5460: 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
5470: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
5480: 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f  Module.Filter" /
5490: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
54a0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
54b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
54c0: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
54d0: 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
54e0: 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
54f0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
5500: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c  anagedModule.Fil
5510: 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ter" /> method..
5520: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
5530: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
5540: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5550: 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
5560: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
5570: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
5580: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
5590: 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  le.Filter" /> me
55a0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
55b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
55c0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
55d0: 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
55e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
55f0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
5600: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5610: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 20 6d  ule.Filter" /> m
5620: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
5630: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
5640: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
5650: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
5660: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
5670: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
5680: 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
5690: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
56a0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
56b0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
56c0: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 53 51 4c  lic override SQL
56d0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c  iteErrorCode Fil
56e0: 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
56f0: 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
5700: 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
5710: 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
5720: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
5730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
5740: 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
5750: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
5760: 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
5770: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
5780: 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
5790: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
57a0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
57b0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
57c0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
57d0: 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 20 65 6e  sorEnumerator en
57e0: 75 6d 65 72 61 74 6f 72 43 75 72 73 6f 72 20 3d  umeratorCursor =
57f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5800: 20 20 63 75 72 73 6f 72 20 61 73 20 53 51 4c 69    cursor as SQLi
5810: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
5820: 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 3b 0d  rsorEnumerator;.
5830: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
5840: 66 20 28 65 6e 75 6d 65 72 61 74 6f 72 43 75 72  f (enumeratorCur
5850: 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  sor == null)..  
5860: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5870: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5880: 75 72 6e 20 43 75 72 73 6f 72 54 79 70 65 4d 69  urn CursorTypeMi
5890: 73 6d 61 74 63 68 45 72 72 6f 72 28 63 75 72 73  smatchError(curs
58a0: 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or,..           
58b0: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
58c0: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
58d0: 6c 65 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74  leCursorEnumerat
58e0: 6f 72 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  or));..         
58f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
5900: 20 20 20 20 65 6e 75 6d 65 72 61 74 6f 72 43 75      enumeratorCu
5910: 72 73 6f 72 2e 46 69 6c 74 65 72 28 69 6e 64 65  rsor.Filter(inde
5920: 78 4e 75 6d 62 65 72 2c 20 69 6e 64 65 78 53 74  xNumber, indexSt
5930: 72 69 6e 67 2c 20 76 61 6c 75 65 73 29 3b 0d 0a  ring, values);..
5940: 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 75 6d              enum
5950: 65 72 61 74 6f 72 43 75 72 73 6f 72 2e 52 65 73  eratorCursor.Res
5960: 65 74 28 29 3b 20 2f 2a 20 4e 4f 20 52 45 53 55  et(); /* NO RESU
5970: 4c 54 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  LT */..         
5980: 20 20 20 65 6e 75 6d 65 72 61 74 6f 72 43 75 72     enumeratorCur
5990: 73 6f 72 2e 4d 6f 76 65 4e 65 78 74 28 29 3b 20  sor.MoveNext(); 
59a0: 2f 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 0d  /* IGNORED */...
59b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
59c0: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
59d0: 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
59e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
59f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a30: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
5a40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5a50: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
5a60: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
5a70: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5a80: 75 6c 65 2e 4e 65 78 74 22 20 2f 3e 20 6d 65 74  ule.Next" /> met
5a90: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
5aa0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5ab0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
5ac0: 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d   name="cursor">.
5ad0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65  .        /// See
5ae0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
5af0: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
5b00: 64 75 6c 65 2e 4e 65 78 74 22 20 2f 3e 20 6d 65  dule.Next" /> me
5b10: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
5b20: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
5b30: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
5b40: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
5b50: 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
5b60: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
5b70: 64 4d 6f 64 75 6c 65 2e 4e 65 78 74 22 20 2f 3e  dModule.Next" />
5b80: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
5b90: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
5ba0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
5bb0: 20 6f 76 65 72 72 69 64 65 20 53 51 4c 69 74 65   override SQLite
5bc0: 45 72 72 6f 72 43 6f 64 65 20 4e 65 78 74 28 0d  ErrorCode Next(.
5bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
5be0: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
5bf0: 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20 20  ursor cursor..  
5c00: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5c10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5c20: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
5c30: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
5c40: 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
5c50: 6c 54 61 62 6c 65 43 75 72 73 6f 72 45 6e 75 6d  lTableCursorEnum
5c60: 65 72 61 74 6f 72 20 65 6e 75 6d 65 72 61 74 6f  erator enumerato
5c70: 72 43 75 72 73 6f 72 20 3d 0d 0a 20 20 20 20 20  rCursor =..     
5c80: 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f             curso
5c90: 72 20 61 73 20 53 51 4c 69 74 65 56 69 72 74 75  r as SQLiteVirtu
5ca0: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 45 6e 75  alTableCursorEnu
5cb0: 6d 65 72 61 74 6f 72 3b 0d 0a 0d 0a 20 20 20 20  merator;....    
5cc0: 20 20 20 20 20 20 20 20 69 66 20 28 65 6e 75 6d          if (enum
5cd0: 65 72 61 74 6f 72 43 75 72 73 6f 72 20 3d 3d 20  eratorCursor == 
5ce0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5cf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5d00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 75 72        return Cur
5d10: 73 6f 72 54 79 70 65 4d 69 73 6d 61 74 63 68 45  sorTypeMismatchE
5d20: 72 72 6f 72 28 63 75 72 73 6f 72 2c 0d 0a 20 20  rror(cursor,..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 56    typeof(SQLiteV
5d50: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
5d60: 72 45 6e 75 6d 65 72 61 74 6f 72 29 29 3b 0d 0a  rEnumerator));..
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
5d80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
5d90: 28 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73 6f  (enumeratorCurso
5da0: 72 2e 45 6e 64 4f 66 45 6e 75 6d 65 72 61 74 6f  r.EndOfEnumerato
5db0: 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r)..            
5dc0: 20 20 20 20 72 65 74 75 72 6e 20 43 75 72 73 6f      return Curso
5dd0: 72 45 6e 64 4f 66 45 6e 75 6d 65 72 61 74 6f 72  rEndOfEnumerator
5de0: 45 72 72 6f 72 28 63 75 72 73 6f 72 29 3b 0d 0a  Error(cursor);..
5df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e  ..            en
5e00: 75 6d 65 72 61 74 6f 72 43 75 72 73 6f 72 2e 4d  umeratorCursor.M
5e10: 6f 76 65 4e 65 78 74 28 29 3b 20 2f 2a 20 49 47  oveNext(); /* IG
5e20: 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  NORED */..      
5e30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
5e40: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b  iteErrorCode.Ok;
5e50: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
5e60: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
5e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5eb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
5ec0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
5ed0: 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
5ee0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
5ef0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 45 6f 66  anagedModule.Eof
5f00: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
5f10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 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 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
5f40: 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
5f50: 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
5f60: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
5f70: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 45 6f 66  anagedModule.Eof
5f80: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
5f90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
5fa0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
5fb0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
5fc0: 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
5fd0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
5fe0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 45  eManagedModule.E
5ff0: 6f 66 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  of" /> method...
6000: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
6010: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
6020: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
6030: 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20 20  bool Eof(..     
6040: 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
6050: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
6060: 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20  cursor..        
6070: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
6080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
6090: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
60a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
60b0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
60c0: 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72  CursorEnumerator
60d0: 20 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73 6f   enumeratorCurso
60e0: 72 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r =..           
60f0: 20 20 20 20 20 63 75 72 73 6f 72 20 61 73 20 53       cursor as S
6100: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
6110: 65 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f  eCursorEnumerato
6120: 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  r;....          
6130: 20 20 69 66 20 28 65 6e 75 6d 65 72 61 74 6f 72    if (enumerator
6140: 43 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d  Cursor == null).
6150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
6160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6170: 72 65 74 75 72 6e 20 52 65 73 75 6c 74 43 6f 64  return ResultCod
6180: 65 54 6f 45 6f 66 52 65 73 75 6c 74 28 43 75 72  eToEofResult(Cur
6190: 73 6f 72 54 79 70 65 4d 69 73 6d 61 74 63 68 45  sorTypeMismatchE
61a0: 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20  rror(..         
61b0: 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 6f             curso
61c0: 72 2c 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65  r, typeof(SQLite
61d0: 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
61e0: 6f 72 45 6e 75 6d 65 72 61 74 6f 72 29 29 29 3b  orEnumerator)));
61f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
6200: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
6210: 65 74 75 72 6e 20 65 6e 75 6d 65 72 61 74 6f 72  eturn enumerator
6220: 43 75 72 73 6f 72 2e 45 6e 64 4f 66 45 6e 75 6d  Cursor.EndOfEnum
6230: 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20  erator;..       
6240: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
6250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6290: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
62a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
62b0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
62c0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
62d0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
62e0: 75 6c 65 2e 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  ule.Column" /> m
62f0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
6300: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6310: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
6320: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
6330: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
6340: 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
6350: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
6360: 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22 20 2f  Module.Column" /
6370: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
6380: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6390: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
63a0: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78  ram name="contex
63b0: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
63c0: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
63d0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
63e0: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22  edModule.Column"
63f0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
6400: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6410: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6420: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
6430: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
6440: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
6450: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
6460: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22  edModule.Column"
6470: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
6480: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6490: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
64a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
64b0: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
64c0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
64d0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
64e0: 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
64f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6500: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6510: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
6520: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
6530: 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20  e Column(..     
6540: 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
6550: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
6560: 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  cursor,..       
6570: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 74 65       SQLiteConte
6580: 78 74 20 63 6f 6e 74 65 78 74 2c 0d 0a 20 20 20  xt context,..   
6590: 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
65a0: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
65b0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
65c0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
65d0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
65e0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
65f0: 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
6600: 6f 72 45 6e 75 6d 65 72 61 74 6f 72 20 65 6e 75  orEnumerator enu
6610: 6d 65 72 61 74 6f 72 43 75 72 73 6f 72 20 3d 0d  meratorCursor =.
6620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6630: 20 63 75 72 73 6f 72 20 61 73 20 53 51 4c 69 74   cursor as SQLit
6640: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
6650: 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 3b 0d 0a  sorEnumerator;..
6660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
6670: 20 28 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73   (enumeratorCurs
6680: 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  or == null)..   
6690: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
66b0: 72 6e 20 43 75 72 73 6f 72 54 79 70 65 4d 69 73  rn CursorTypeMis
66c0: 6d 61 74 63 68 45 72 72 6f 72 28 63 75 72 73 6f  matchError(curso
66d0: 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
66e0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53          typeof(S
66f0: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
6700: 65 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f  eCursorEnumerato
6710: 72 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r));..          
6720: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
6730: 20 20 20 69 66 20 28 65 6e 75 6d 65 72 61 74 6f     if (enumerato
6740: 72 43 75 72 73 6f 72 2e 45 6e 64 4f 66 45 6e 75  rCursor.EndOfEnu
6750: 6d 65 72 61 74 6f 72 29 0d 0a 20 20 20 20 20 20  merator)..      
6760: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6770: 20 43 75 72 73 6f 72 45 6e 64 4f 66 45 6e 75 6d   CursorEndOfEnum
6780: 65 72 61 74 6f 72 45 72 72 6f 72 28 63 75 72 73  eratorError(curs
6790: 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
67a0: 20 20 20 20 6f 62 6a 65 63 74 20 63 75 72 72 65      object curre
67b0: 6e 74 20 3d 20 65 6e 75 6d 65 72 61 74 6f 72 43  nt = enumeratorC
67c0: 75 72 73 6f 72 2e 43 75 72 72 65 6e 74 3b 0d 0a  ursor.Current;..
67d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
67e0: 20 28 63 75 72 72 65 6e 74 20 21 3d 20 6e 75 6c   (current != nul
67f0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6800: 20 20 20 20 63 6f 6e 74 65 78 74 2e 53 65 74 53      context.SetS
6810: 74 72 69 6e 67 28 47 65 74 53 74 72 69 6e 67 46  tring(GetStringF
6820: 72 6f 6d 4f 62 6a 65 63 74 28 63 75 72 73 6f 72  romObject(cursor
6830: 2c 20 63 75 72 72 65 6e 74 29 29 3b 0d 0a 20 20  , current));..  
6840: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
6850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6860: 63 6f 6e 74 65 78 74 2e 53 65 74 4e 75 6c 6c 28  context.SetNull(
6870: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6880: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
6890: 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20  rrorCode.Ok;..  
68a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
68b0: 20 20 20 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 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6900: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
6910: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
6920: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
6930: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
6940: 65 64 4d 6f 64 75 6c 65 2e 52 6f 77 49 64 22 20  edModule.RowId" 
6950: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
6960: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6970: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
6980: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
6990: 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
69a0: 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
69b0: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
69c0: 61 67 65 64 4d 6f 64 75 6c 65 2e 52 6f 77 49 64  agedModule.RowId
69d0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
69e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
69f0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
6a00: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f 77  <param name="row
6a10: 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Id">..        //
6a20: 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
6a30: 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61  ref="ISQLiteMana
6a40: 67 65 64 4d 6f 64 75 6c 65 2e 52 6f 77 49 64 22  gedModule.RowId"
6a50: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
6a60: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6a70: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
6a80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
6a90: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
6aa0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
6ab0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 52 6f  ManagedModule.Ro
6ac0: 77 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  wId" /> method..
6ad0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
6ae0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
6af0: 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
6b00: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
6b10: 20 52 6f 77 49 64 28 0d 0a 20 20 20 20 20 20 20   RowId(..       
6b20: 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
6b30: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
6b40: 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  rsor,..         
6b50: 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
6b60: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  d..            )
6b70: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
6b80: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
6b90: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
6ba0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
6bb0: 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
6bc0: 72 45 6e 75 6d 65 72 61 74 6f 72 20 65 6e 75 6d  rEnumerator enum
6bd0: 65 72 61 74 6f 72 43 75 72 73 6f 72 20 3d 0d 0a  eratorCursor =..
6be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bf0: 63 75 72 73 6f 72 20 61 73 20 53 51 4c 69 74 65  cursor as SQLite
6c00: 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
6c10: 6f 72 45 6e 75 6d 65 72 61 74 6f 72 3b 0d 0a 0d  orEnumerator;...
6c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
6c30: 28 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73 6f  (enumeratorCurso
6c40: 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
6c50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6c60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6c70: 6e 20 43 75 72 73 6f 72 54 79 70 65 4d 69 73 6d  n CursorTypeMism
6c80: 61 74 63 68 45 72 72 6f 72 28 63 75 72 73 6f 72  atchError(cursor
6c90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6ca0: 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
6cb0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
6cc0: 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72  CursorEnumerator
6cd0: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
6ce0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
6cf0: 20 20 69 66 20 28 65 6e 75 6d 65 72 61 74 6f 72    if (enumerator
6d00: 43 75 72 73 6f 72 2e 45 6e 64 4f 66 45 6e 75 6d  Cursor.EndOfEnum
6d10: 65 72 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20  erator)..       
6d20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6d30: 43 75 72 73 6f 72 45 6e 64 4f 66 45 6e 75 6d 65  CursorEndOfEnume
6d40: 72 61 74 6f 72 45 72 72 6f 72 28 63 75 72 73 6f  ratorError(curso
6d50: 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
6d60: 20 20 20 6f 62 6a 65 63 74 20 63 75 72 72 65 6e     object curren
6d70: 74 20 3d 20 65 6e 75 6d 65 72 61 74 6f 72 43 75  t = enumeratorCu
6d80: 72 73 6f 72 2e 43 75 72 72 65 6e 74 3b 0d 0a 0d  rsor.Current;...
6d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77  .            row
6da0: 49 64 20 3d 20 47 65 74 52 6f 77 49 64 46 72 6f  Id = GetRowIdFro
6db0: 6d 4f 62 6a 65 63 74 28 63 75 72 73 6f 72 2c 20  mObject(cursor, 
6dc0: 63 75 72 72 65 6e 74 29 3b 0d 0a 20 20 20 20 20  current);..     
6dd0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
6de0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
6df0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
6e00: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6e50: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6e60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6e70: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
6e80: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
6e90: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 55 70  ManagedModule.Up
6ea0: 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  date" /> method.
6eb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6ec0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
6ed0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6ee0: 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
6ef0: 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
6f00: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
6f10: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
6f20: 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Update" /> metho
6f30: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
6f40: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6f50: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6f60: 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20  e="values">..   
6f70: 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
6f80: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
6f90: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
6fa0: 2e 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  .Update" /> meth
6fb0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
6fc0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
6fd0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6fe0: 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20  me="rowId">..   
6ff0: 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
7000: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
7010: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
7020: 2e 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74 68  .Update" /> meth
7030: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
7040: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
7050: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7060: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
7070: 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
7080: 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d  "ISQLiteManagedM
7090: 6f 64 75 6c 65 2e 55 70 64 61 74 65 22 20 2f 3e  odule.Update" />
70a0: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
70b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
70c0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
70d0: 20 6f 76 65 72 72 69 64 65 20 53 51 4c 69 74 65   override SQLite
70e0: 45 72 72 6f 72 43 6f 64 65 20 55 70 64 61 74 65  ErrorCode Update
70f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
7100: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
7110: 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20  e table,..      
7120: 20 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75        SQLiteValu
7130: 65 5b 5d 20 76 61 6c 75 65 73 2c 0d 0a 20 20 20  e[] values,..   
7140: 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
7150: 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20  g rowId..       
7160: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
7170: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
7180: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
7190: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
71a0: 65 74 54 61 62 6c 65 45 72 72 6f 72 28 74 61 62  etTableError(tab
71b0: 6c 65 2c 20 48 65 6c 70 65 72 4d 65 74 68 6f 64  le, HelperMethod
71c0: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
71d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71e0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
71f0: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76                "v
7210: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 5c 22 7b  irtual table \"{
7220: 30 7d 5c 22 20 69 73 20 72 65 61 64 2d 6f 6e 6c  0}\" is read-onl
7230: 79 22 2c 20 74 61 62 6c 65 2e 54 61 62 6c 65 4e  y", table.TableN
7240: 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame));....      
7250: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
7260: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
7270: 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
7280: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
72e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
72f0: 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
7300: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
7310: 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e  teManagedModule.
7320: 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
7330: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
7340: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7350: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7360: 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20  ame="table">..  
7370: 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
7380: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
7390: 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
73a0: 65 2e 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  e.Rename" /> met
73b0: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
73c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
73d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
73e0: 61 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a  ame="newName">..
73f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
7400: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
7410: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
7420: 75 6c 65 2e 52 65 6e 61 6d 65 22 20 2f 3e 20 6d  ule.Rename" /> m
7430: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
7440: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
7450: 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
7460: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
7470: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
7480: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
7490: 65 64 4d 6f 64 75 6c 65 2e 52 65 6e 61 6d 65 22  edModule.Rename"
74a0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
74b0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
74c0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
74d0: 6c 69 63 20 6f 76 65 72 72 69 64 65 20 53 51 4c  lic override SQL
74e0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65 6e  iteErrorCode Ren
74f0: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
7500: 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
7510: 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
7520: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
7530: 6e 65 77 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  newName..       
7540: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
7550: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
7560: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
7570: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
7580: 66 20 28 21 74 61 62 6c 65 2e 52 65 6e 61 6d 65  f (!table.Rename
7590: 28 6e 65 77 4e 61 6d 65 29 29 0d 0a 20 20 20 20  (newName))..    
75a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
75b0: 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
75c0: 62 6c 65 45 72 72 6f 72 28 74 61 62 6c 65 2c 20  bleError(table, 
75d0: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
75e0: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
75f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7600: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
7610: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
7620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7630: 20 20 22 66 61 69 6c 65 64 20 74 6f 20 72 65 6e    "failed to ren
7640: 61 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ame virtual tabl
7650: 65 20 66 72 6f 6d 20 5c 22 7b 30 7d 5c 22 20 74  e from \"{0}\" t
7660: 6f 20 5c 22 7b 31 7d 5c 22 22 2c 0d 0a 20 20 20  o \"{1}\"",..   
7670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7680: 20 74 61 62 6c 65 2e 54 61 62 6c 65 4e 61 6d 65   table.TableName
7690: 2c 20 6e 65 77 4e 61 6d 65 29 29 3b 0d 0a 0d 0a  , newName));....
76a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76b0: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
76c0: 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
76d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
76f0: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
7700: 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20  de.Ok;..        
7710: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
7720: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
7730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7780: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
7790: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
77a0: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
77b0: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
77c0: 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
77d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
77e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
77f0: 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
7800: 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
7810: 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
7820: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
7830: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
7840: 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
7850: 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
7860: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7870: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
7880: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
7890: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
78a0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
78b0: 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
78c0: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
78d0: 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
78e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
7900: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
7910: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
7920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7930: 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
7940: 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61  iteModuleEnumera
7950: 62 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ble).Name);..   
7960: 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
7970: 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
7980: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
79e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
79f0: 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20     /// Disposes 
7a00: 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  of this object i
7a10: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20  nstance...      
7a20: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7a30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7a40: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f  aram name="dispo
7a50: 73 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20  sing">..        
7a60: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
7a70: 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62  this method is b
7a80: 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d  eing called from
7a90: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
7aa0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 44 69  / <see cref="IDi
7ab0: 73 70 6f 73 61 62 6c 65 2e 44 69 73 70 6f 73 65  sposable.Dispose
7ac0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65  " /> method.  Ze
7ad0: 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f  ro if this metho
7ae0: 64 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  d is..        //
7af0: 2f 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66  / being called f
7b00: 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65  rom the finalize
7b10: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
7b20: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
7b30: 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72    protected over
7b40: 72 69 64 65 20 76 6f 69 64 20 44 69 73 70 6f 73  ride void Dispos
7b50: 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
7b60: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7b70: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
7b80: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
7b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7ba0: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
7bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
7bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7bd0: 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
7be0: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
7bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
7c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c10: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
7c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
7c60: 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
7c70: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
7c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c90: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
7ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cd0: 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
7ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d10: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
7d20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
7d30: 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
7d40: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
7d50: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7d60: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
7d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
7db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
7dc0: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
7dd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7de0: 20 20 20 20 20 62 61 73 65 2e 44 69 73 70 6f 73       base.Dispos
7df0: 65 28 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d  e(disposing);...
7e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7e10: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
7e20: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76       // NOTE: Ev
7e30: 65 72 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20  erything should 
7e40: 62 65 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65  be fully dispose
7e50: 64 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e  d at this point.
7e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7e70: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7e80: 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
7e90: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
7ea0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
7eb0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7ec0: 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
7ed0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a   #endregion..}..
7ee0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 2f 2f  #endregion....//
7ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7f40: 0a 23 72 65 67 69 6f 6e 20 47 65 6e 65 72 69 63  .#region Generic
7f50: 20 43 6c 61 73 73 65 73 0d 0a 6e 61 6d 65 73 70   Classes..namesp
7f60: 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ace System.Data.
7f70: 53 51 4c 69 74 65 2e 47 65 6e 65 72 69 63 0d 0a  SQLite.Generic..
7f80: 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  {..    #region S
7f90: 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
7fa0: 65 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f  eCursorEnumerato
7fb0: 72 3c 54 3e 20 43 6c 61 73 73 0d 0a 20 20 20 20  r<T> Class..    
7fc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7fd0: 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73     /// This clas
7fe0: 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 76  s represents a v
7ff0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72  irtual table cur
8000: 73 6f 72 20 74 6f 20 62 65 20 75 73 65 64 20 77  sor to be used w
8010: 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  ith the..    ///
8020: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
8030: 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61 62  teModuleEnumerab
8040: 6c 65 22 20 2f 3e 20 63 6c 61 73 73 2e 20 20 49  le" /> class.  I
8050: 74 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20  t is not sealed 
8060: 61 6e 64 20 6d 61 79 0d 0a 20 20 20 20 2f 2f 2f  and may..    ///
8070: 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20   be used as the 
8080: 62 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61  base class for a
8090: 6e 79 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20  ny user-defined 
80a0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
80b0: 72 73 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 63 6c  rsor..    /// cl
80c0: 61 73 73 20 74 68 61 74 20 77 72 61 70 73 20 61  ass that wraps a
80d0: 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45 6e  n <see cref="IEn
80e0: 75 6d 65 72 61 74 6f 72 7b 54 7d 22 20 2f 3e 20  umerator{T}" /> 
80f0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
8100: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8110: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
8120: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 56 69 72   class SQLiteVir
8130: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 45  tualTableCursorE
8140: 6e 75 6d 65 72 61 74 6f 72 3c 54 3e 20 3a 0d 0a  numerator<T> :..
8150: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
8160: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
8170: 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 2c 20  rsorEnumerator, 
8180: 49 45 6e 75 6d 65 72 61 74 6f 72 3c 54 3e 20 2f  IEnumerator<T> /
8190: 2a 20 4e 4f 54 20 53 45 41 4c 45 44 20 2a 2f 0d  * NOT SEALED */.
81a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
81b0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
81c0: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Data..        //
81d0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
81e0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
81f0: 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65 72 61  e cref="IEnumera
8200: 74 6f 72 7b 54 7d 22 20 2f 3e 20 69 6e 73 74 61  tor{T}" /> insta
8210: 6e 63 65 20 70 72 6f 76 69 64 65 64 20 77 68 65  nce provided whe
8220: 6e 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  n this..        
8230: 2f 2f 2f 20 63 75 72 73 6f 72 20 77 61 73 20 63  /// cursor was c
8240: 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 20 20 20  reated...       
8250: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8260: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
8270: 20 49 45 6e 75 6d 65 72 61 74 6f 72 3c 54 3e 20   IEnumerator<T> 
8280: 65 6e 75 6d 65 72 61 74 6f 72 3b 0d 0a 20 20 20  enumerator;..   
8290: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
82a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
82b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82f0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
8300: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
8310: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
8320: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8330: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
8340: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
8350: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
8360: 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ss...        ///
8370: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8380: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
8390: 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
83a0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
83b0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
83c0: 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
83d0: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
83e0: 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
83f0: 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
8400: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
8410: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
8420: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
8430: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8440: 6d 65 3d 22 65 6e 75 6d 65 72 61 74 6f 72 22 3e  me="enumerator">
8450: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
8460: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45 6e  e <see cref="IEn
8470: 75 6d 65 72 61 74 6f 72 7b 54 7d 22 20 2f 3e 20  umerator{T}" /> 
8480: 69 6e 73 74 61 6e 63 65 20 74 6f 20 65 78 70 6f  instance to expo
8490: 73 65 20 61 73 20 61 20 76 69 72 74 75 61 6c 0d  se as a virtual.
84a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61 62  .        /// tab
84b0: 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  le cursor...    
84c0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
84d0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
84e0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
84f0: 62 6c 65 43 75 72 73 6f 72 45 6e 75 6d 65 72 61  bleCursorEnumera
8500: 74 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tor(..          
8510: 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
8520: 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
8530: 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72           IEnumer
8540: 61 74 6f 72 3c 54 3e 20 65 6e 75 6d 65 72 61 74  ator<T> enumerat
8550: 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
8560: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  )..            :
8570: 20 62 61 73 65 28 74 61 62 6c 65 2c 20 65 6e 75   base(table, enu
8580: 6d 65 72 61 74 6f 72 20 61 73 20 49 45 6e 75 6d  merator as IEnum
8590: 65 72 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20  erator)..       
85a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
85b0: 74 68 69 73 2e 65 6e 75 6d 65 72 61 74 6f 72 20  this.enumerator 
85c0: 3d 20 65 6e 75 6d 65 72 61 74 6f 72 3b 0d 0a 20  = enumerator;.. 
85d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
85e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
85f0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8640: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
8650: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 6d 62 65 72  on Public Member
8660: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
8670: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8680: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
8690: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
86a0: 63 75 72 72 65 6e 74 20 72 6f 77 20 6f 66 20 74  current row of t
86b0: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
86c0: 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20   cursor..       
86d0: 20 2f 2f 2f 20 75 73 69 6e 67 20 74 68 65 20 3c   /// using the <
86e0: 73 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65  see cref="IEnume
86f0: 72 61 74 6f 72 7b 54 7d 2e 43 75 72 72 65 6e 74  rator{T}.Current
8700: 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6f 66  " /> property of
8710: 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
8720: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45 6e  / <see cref="IEn
8730: 75 6d 65 72 61 74 6f 72 7b 54 7d 22 20 2f 3e 20  umerator{T}" /> 
8740: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
8750: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8760: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8770: 20 20 54 20 49 45 6e 75 6d 65 72 61 74 6f 72 3c    T IEnumerator<
8780: 54 3e 2e 43 75 72 72 65 6e 74 0d 0a 20 20 20 20  T>.Current..    
8790: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
87a0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
87b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
87c0: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
87d0: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
87e0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 43 6c           CheckCl
87f0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
8800: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
8810: 6e 75 6d 65 72 61 74 6f 72 20 3d 3d 20 6e 75 6c  numerator == nul
8820: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
8830: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
8840: 65 66 61 75 6c 74 28 54 29 3b 0d 0a 0d 0a 20 20  efault(T);....  
8850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8860: 74 75 72 6e 20 65 6e 75 6d 65 72 61 74 6f 72 2e  turn enumerator.
8870: 43 75 72 72 65 6e 74 3b 0d 0a 20 20 20 20 20 20  Current;..      
8880: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8890: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
88f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8900: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6c 6f 73          /// Clos
8910: 65 73 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  es the virtual t
8920: 61 62 6c 65 20 63 75 72 73 6f 72 2e 20 20 54 68  able cursor.  Th
8930: 69 73 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 6e  is method must n
8940: 6f 74 20 74 68 72 6f 77 20 61 6e 79 0d 0a 20 20  ot throw any..  
8950: 20 20 20 20 20 20 2f 2f 2f 20 65 78 63 65 70 74        /// except
8960: 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ions...        /
8970: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8980: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
8990: 65 72 72 69 64 65 20 76 6f 69 64 20 43 6c 6f 73  erride void Clos
89a0: 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e()..        {..
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
89c0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
89d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
89e0: 43 68 65 63 6b 43 6c 6f 73 65 64 28 29 3b 0d 0a  CheckClosed();..
89f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
8a00: 20 28 65 6e 75 6d 65 72 61 74 6f 72 20 21 3d 20   (enumerator != 
8a10: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8a20: 20 20 20 20 20 20 20 65 6e 75 6d 65 72 61 74 6f         enumerato
8a30: 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  r = null;....   
8a40: 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 43 6c           base.Cl
8a50: 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
8a60: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
8a70: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
8a80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ac0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8ad0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
8ae0: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
8af0: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
8b00: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
8b10: 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20  disposed;..     
8b20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8b30: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
8b40: 72 6f 77 73 20 61 6e 20 3c 73 65 65 20 63 72 65  rows an <see cre
8b50: 66 3d 22 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  f="ObjectDispose
8b60: 64 45 78 63 65 70 74 69 6f 6e 22 20 2f 3e 20 69  dException" /> i
8b70: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0d 0a 20  f this object.. 
8b80: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61         /// insta
8b90: 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
8ba0: 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
8bb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8bc0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
8bd0: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
8be0: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
8bf0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
8c00: 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
8c10: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
8c20: 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
8c30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
8c50: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
8c60: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
8c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8c80: 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
8c90: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
8ca0: 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72 3c  ursorEnumerator<
8cb0: 54 3e 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  T>).Name);..    
8cc0: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
8cd0: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
8ce0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8d30: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8d40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8d50: 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f    /// Disposes o
8d60: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e  f this object in
8d70: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20  stance...       
8d80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8d90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
8da0: 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73  ram name="dispos
8db0: 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ing">..        /
8dc0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
8dd0: 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 62 65  his method is be
8de0: 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
8df0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
8e00: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 44 69 73   <see cref="IDis
8e10: 70 6f 73 61 62 6c 65 2e 44 69 73 70 6f 73 65 22  posable.Dispose"
8e20: 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72   /> method.  Zer
8e30: 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
8e40: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
8e50: 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66 72   being called fr
8e60: 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 72  om the finalizer
8e70: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8e80: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
8e90: 20 70 72 6f 74 65 63 74 65 64 20 6f 76 65 72 72   protected overr
8ea0: 69 64 65 20 76 6f 69 64 20 44 69 73 70 6f 73 65  ide void Dispose
8eb0: 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29  (bool disposing)
8ec0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8ed0: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
8ee0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8f00: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f30: 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
8f40: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
8f50: 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20            //{.. 
8f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f70: 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70     //    // disp
8fc0: 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f  ose managed reso
8fd0: 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
8fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ff0: 20 20 20 2f 2f 20 20 20 20 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 0d 0a 20  /////////////.. 
9020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9030: 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20     //}....      
9040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
9080: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
9090: 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
90a0: 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
90b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
90c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
90f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9100: 20 20 20 20 43 6c 6f 73 65 28 29 3b 0d 0a 20 20      Close();..  
9110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9130: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
9140: 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
9150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9160: 20 20 20 20 62 61 73 65 2e 44 69 73 70 6f 73 65      base.Dispose
9170: 28 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a  (disposing);....
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
91a0: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65      // NOTE: Eve
91b0: 72 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20 62  rything should b
91c0: 65 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65 64  e fully disposed
91d0: 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d   at this point..
91e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
91f0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9200: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
9210: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
9220: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
9230: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
9240: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ion..    }..    
9250: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
9260: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
92b0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c  .    #region SQL
92c0: 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61  iteModuleEnumera
92d0: 62 6c 65 3c 54 3e 20 43 6c 61 73 73 0d 0a 20 20  ble<T> Class..  
92e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
92f0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c  .    /// This cl
9300: 61 73 73 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61  ass implements a
9310: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
9320: 6f 64 75 6c 65 20 74 68 61 74 20 65 78 70 6f 73  odule that expos
9330: 65 73 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  es an..    /// <
9340: 73 65 65 20 63 72 65 66 3d 22 49 45 6e 75 6d 65  see cref="IEnume
9350: 72 61 62 6c 65 7b 54 7d 22 20 2f 3e 20 6f 62 6a  rable{T}" /> obj
9360: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 20  ect instance as 
9370: 61 20 72 65 61 64 2d 6f 6e 6c 79 20 76 69 72 74  a read-only virt
9380: 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 74 61 62  ual..    /// tab
9390: 6c 65 2e 20 20 49 74 20 69 73 20 6e 6f 74 20 73  le.  It is not s
93a0: 65 61 6c 65 64 20 61 6e 64 20 6d 61 79 20 62 65  ealed and may be
93b0: 20 75 73 65 64 20 61 73 20 74 68 65 20 62 61 73   used as the bas
93c0: 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d  e class for any.
93d0: 0a 20 20 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65  .    /// user-de
93e0: 66 69 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  fined virtual ta
93f0: 62 6c 65 20 63 6c 61 73 73 20 74 68 61 74 20 77  ble class that w
9400: 72 61 70 73 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f  raps an..    ///
9410: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45 6e 75   <see cref="IEnu
9420: 6d 65 72 61 62 6c 65 7b 54 7d 22 20 2f 3e 20 6f  merable{T}" /> o
9430: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
9440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
9450: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
9460: 63 6c 61 73 73 20 53 51 4c 69 74 65 4d 6f 64 75  class SQLiteModu
9470: 6c 65 45 6e 75 6d 65 72 61 62 6c 65 3c 54 3e 20  leEnumerable<T> 
9480: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  :..            S
9490: 51 4c 69 74 65 4d 6f 64 75 6c 65 45 6e 75 6d 65  QLiteModuleEnume
94a0: 72 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41  rable /* NOT SEA
94b0: 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20  LED */..    {.. 
94c0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
94d0: 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
94e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
94f0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9500: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  The <see cref="I
9510: 45 6e 75 6d 65 72 61 62 6c 65 7b 54 7d 22 20 2f  Enumerable{T}" /
9520: 3e 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  > instance conta
9530: 69 6e 69 6e 67 20 74 68 65 20 62 61 63 6b 69 6e  ining the backin
9540: 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64  g..        /// d
9550: 61 74 61 20 66 6f 72 20 74 68 65 20 76 69 72 74  ata for the virt
9560: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
9570: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9580: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  y>..        priv
9590: 61 74 65 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c  ate IEnumerable<
95a0: 54 3e 20 65 6e 75 6d 65 72 61 62 6c 65 3b 0d 0a  T> enumerable;..
95b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
95c0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
95d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9620: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
9630: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
9640: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9650: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
9660: 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
9670: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
9680: 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  class...        
9690: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
96a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
96b0: 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
96c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
96d0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64   name of the mod
96e0: 75 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ule.  This param
96f0: 65 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e  eter cannot be n
9700: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
9710: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
9720: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9730: 61 6d 65 3d 22 65 6e 75 6d 65 72 61 62 6c 65 22  ame="enumerable"
9740: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
9750: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 45  he <see cref="IE
9760: 6e 75 6d 65 72 61 62 6c 65 7b 54 7d 22 20 2f 3e  numerable{T}" />
9770: 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 65 78 70   instance to exp
9780: 6f 73 65 20 61 73 20 61 20 76 69 72 74 75 61 6c  ose as a virtual
9790: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 61  ..        /// ta
97a0: 62 6c 65 2e 20 20 54 68 69 73 20 70 61 72 61 6d  ble.  This param
97b0: 65 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 6e  eter cannot be n
97c0: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ull...        //
97d0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
97e0: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
97f0: 65 4d 6f 64 75 6c 65 45 6e 75 6d 65 72 61 62 6c  eModuleEnumerabl
9800: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
9810: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
9820: 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65            IEnume
9830: 72 61 62 6c 65 3c 54 3e 20 65 6e 75 6d 65 72 61  rable<T> enumera
9840: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ble..           
9850: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9860: 3a 20 62 61 73 65 28 6e 61 6d 65 2c 20 65 6e 75  : base(name, enu
9870: 6d 65 72 61 62 6c 65 20 61 73 20 49 45 6e 75 6d  merable as IEnum
9880: 65 72 61 62 6c 65 29 0d 0a 20 20 20 20 20 20 20  erable)..       
9890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
98a0: 74 68 69 73 2e 65 6e 75 6d 65 72 61 62 6c 65 20  this.enumerable 
98b0: 3d 20 65 6e 75 6d 65 72 61 62 6c 65 3b 0d 0a 20  = enumerable;.. 
98c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
98d0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
98e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9930: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
9940: 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  on ISQLiteManage
9950: 64 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  dModule Members.
9960: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
9970: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
9980: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
9990: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
99a0: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 4f 70 65 6e  nagedModule.Open
99b0: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
99c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
99d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
99e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
99f0: 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  able">..        
9a00: 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
9a10: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
9a20: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 4f 70 65 6e  nagedModule.Open
9a30: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
9a40: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
9a50: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
9a60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72  <param name="cur
9a70: 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  sor">..        /
9a80: 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
9a90: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
9aa0: 61 67 65 64 4d 6f 64 75 6c 65 2e 4f 70 65 6e 22  agedModule.Open"
9ab0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
9ac0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9ad0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
9ae0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9af0: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
9b00: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
9b10: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 4f 70  ManagedModule.Op
9b20: 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  en" /> method...
9b30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
9b40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
9b50: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
9b60: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
9b70: 4f 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  Open(..         
9b80: 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
9b90: 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20  Table table,..  
9ba0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
9bb0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
9bc0: 43 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20  Cursor cursor.. 
9bd0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
9be0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9bf0: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
9c00: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
9c10: 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65       cursor = ne
9c20: 77 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  w SQLiteVirtualT
9c30: 61 62 6c 65 43 75 72 73 6f 72 45 6e 75 6d 65 72  ableCursorEnumer
9c40: 61 74 6f 72 3c 54 3e 28 0d 0a 20 20 20 20 20 20  ator<T>(..      
9c50: 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 2c            table,
9c60: 20 65 6e 75 6d 65 72 61 62 6c 65 2e 47 65 74 45   enumerable.GetE
9c70: 6e 75 6d 65 72 61 74 6f 72 28 29 29 3b 0d 0a 0d  numerator());...
9c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
9c90: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
9ca0: 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20  ode.Ok;..       
9cb0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
9cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d00: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
9d10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9d20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
9d30: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
9d40: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
9d50: 75 6c 65 2e 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  ule.Column" /> m
9d60: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
9d70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9d80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
9d90: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f 72 22  am name="cursor"
9da0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53  >..        /// S
9db0: 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
9dc0: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
9dd0: 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22 20 2f  Module.Column" /
9de0: 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
9df0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9e00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
9e10: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78  ram name="contex
9e20: 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
9e30: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
9e40: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
9e50: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22  edModule.Column"
9e60: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
9e70: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9e80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
9e90: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65  param name="inde
9ea0: 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  x">..        ///
9eb0: 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
9ec0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
9ed0: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6c 75 6d 6e 22  edModule.Column"
9ee0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
9ef0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
9f00: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
9f10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9f20: 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
9f30: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
9f40: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f  ManagedModule.Co
9f50: 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lumn" /> method.
9f60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
9f70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
9f80: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
9f90: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
9fa0: 65 20 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20  e Column(..     
9fb0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
9fc0: 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
9fd0: 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  cursor,..       
9fe0: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 74 65       SQLiteConte
9ff0: 78 74 20 63 6f 6e 74 65 78 74 2c 0d 0a 20 20 20  xt context,..   
a000: 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64           int ind
a010: 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ex..            
a020: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a030: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
a040: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
a050: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
a060: 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
a070: 6f 72 45 6e 75 6d 65 72 61 74 6f 72 3c 54 3e 20  orEnumerator<T> 
a080: 65 6e 75 6d 65 72 61 74 6f 72 43 75 72 73 6f 72  enumeratorCursor
a090: 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
a0a0: 20 20 20 20 63 75 72 73 6f 72 20 61 73 20 53 51      cursor as SQ
a0b0: 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
a0c0: 43 75 72 73 6f 72 45 6e 75 6d 65 72 61 74 6f 72  CursorEnumerator
a0d0: 3c 54 3e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  <T>;....        
a0e0: 20 20 20 20 69 66 20 28 65 6e 75 6d 65 72 61 74      if (enumerat
a0f0: 6f 72 43 75 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c  orCursor == null
a100: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
a110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a120: 20 20 72 65 74 75 72 6e 20 43 75 72 73 6f 72 54    return CursorT
a130: 79 70 65 4d 69 73 6d 61 74 63 68 45 72 72 6f 72  ypeMismatchError
a140: 28 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20  (cursor,..      
a150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
a160: 70 65 6f 66 28 53 51 4c 69 74 65 56 69 72 74 75  peof(SQLiteVirtu
a170: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 45 6e 75  alTableCursorEnu
a180: 6d 65 72 61 74 6f 72 29 29 3b 0d 0a 20 20 20 20  merator));..    
a190: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a1a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6e 75           if (enu
a1b0: 6d 65 72 61 74 6f 72 43 75 72 73 6f 72 2e 45 6e  meratorCursor.En
a1c0: 64 4f 66 45 6e 75 6d 65 72 61 74 6f 72 29 0d 0a  dOfEnumerator)..
a1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1e0: 72 65 74 75 72 6e 20 43 75 72 73 6f 72 45 6e 64  return CursorEnd
a1f0: 4f 66 45 6e 75 6d 65 72 61 74 6f 72 45 72 72 6f  OfEnumeratorErro
a200: 72 28 63 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  r(cursor);....  
a210: 20 20 20 20 20 20 20 20 20 20 54 20 63 75 72 72            T curr
a220: 65 6e 74 20 3d 20 28 28 49 45 6e 75 6d 65 72 61  ent = ((IEnumera
a230: 74 6f 72 3c 54 3e 29 65 6e 75 6d 65 72 61 74 6f  tor<T>)enumerato
a240: 72 43 75 72 73 6f 72 29 2e 43 75 72 72 65 6e 74  rCursor).Current
a250: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a260: 20 69 66 20 28 63 75 72 72 65 6e 74 20 21 3d 20   if (current != 
a270: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
a280: 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 53         context.S
a290: 65 74 53 74 72 69 6e 67 28 47 65 74 53 74 72 69  etString(GetStri
a2a0: 6e 67 46 72 6f 6d 4f 62 6a 65 63 74 28 63 75 72  ngFromObject(cur
a2b0: 73 6f 72 2c 20 63 75 72 72 65 6e 74 29 29 3b 0d  sor, current));.
a2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
a2d0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
a2e0: 20 20 20 63 6f 6e 74 65 78 74 2e 53 65 74 4e 75     context.SetNu
a2f0: 6c 6c 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ll();....       
a300: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
a310: 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d  teErrorCode.Ok;.
a320: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
a330: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
a350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a390: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
a3a0: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
a3b0: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
a3c0: 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  rs..        priv
a3d0: 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
a3e0: 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d;..        /// 
a3f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a400: 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61 6e     /// Throws an
a410: 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65   <see cref="Obje
a420: 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
a430: 69 6f 6e 22 20 2f 3e 20 69 66 20 74 68 69 73 20  ion" /> if this 
a440: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20  object..        
a450: 2f 2f 2f 20 69 6e 73 74 61 6e 63 65 20 68 61 73  /// instance has
a460: 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e 0d   been disposed..
a470: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
a480: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
a490: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
a4a0: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
a4b0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
a4c0: 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
a4d0: 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
a4e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
a4f0: 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
a500: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a510: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
a520: 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
a530: 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
a540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
a550: 79 70 65 6f 66 28 53 51 4c 69 74 65 4d 6f 64 75  ypeof(SQLiteModu
a560: 6c 65 45 6e 75 6d 65 72 61 62 6c 65 3c 54 3e 29  leEnumerable<T>)
a570: 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
a580: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
a590: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a5a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a5f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
a600: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
a610: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
a620: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
a630: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
a640: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a650: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
a660: 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
a670: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
a680: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
a690: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
a6a0: 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
a6b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
a6c0: 65 65 20 63 72 65 66 3d 22 49 44 69 73 70 6f 73  ee cref="IDispos
a6d0: 61 62 6c 65 2e 44 69 73 70 6f 73 65 22 20 2f 3e  able.Dispose" />
a6e0: 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69   method.  Zero i
a6f0: 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73  f this method is
a700: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 65  ..        /// be
a710: 69 6e 67 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  ing called from 
a720: 74 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a  the finalizer...
a730: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
a740: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ram>..        pr
a750: 6f 74 65 63 74 65 64 20 6f 76 65 72 72 69 64 65  otected override
a760: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
a770: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
a780: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a790: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
a7a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a7b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
a7c0: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
a7d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a7f0: 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
a800: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a810: 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20         //{..    
a820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a830: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
a840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
a860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a870: 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65  //    // dispose
a880: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
a890: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
a8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a8b0: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
a8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a8f0: 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  //}....         
a900: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
a910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a930: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
a940: 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
a950: 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
a960: 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
a970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a980: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
a9b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
a9c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a9d0: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
a9e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
a9f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa00: 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28 64 69   base.Dispose(di
aa10: 73 70 6f 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  sposing);....   
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
aa30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa40: 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74   // NOTE: Everyt
aa50: 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66  hing should be f
aa60: 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74  ully disposed at
aa70: 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20   this point...  
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
aa90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aaa0: 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
aab0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
aac0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
aad0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
aae0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
aaf0: 64 72 65 67 69 6f 6e 0d 0a 7d 0d 0a 23 65 6e 64  dregion..}..#end
ab00: 72 65 67 69 6f 6e 0d 0a                          region..