Click here to Skip to main content
13,795,374 members
Click here to Skip to main content
Articles » Database » Database » Utilities » Downloads

Stats

5.8M views
154.4K downloads
1.5K bookmarked
Posted 9 Jan 2005
Licenced MIT

A Fast CSV Reader

, 13 Jan 2016
A reader that provides fast, non-cached, forward-only access to CSV data.
CsvReader11_demo
CsvReader11_demo
CsvReader11_demo
CsvReaderBenchmarks
App.ico
data.rar
CsvReaderDemo
App.ico
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
CsvReaderBenchmarks
App.ico
data.rar
CsvReaderDemo
App.ico
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
CsvReaderBenchmarks
App.ico
data.rar
CsvReaderDemo
App.ico
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
CsvReader11_src
CsvReader11_src
CsvReader11_src
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
LumenWorks.Framework.IO
Csv
Events
Exceptions
Resources
LumenWorks.Framework.Tests.Unit
IO
Csv
CsvReader20_demo
CsvReader20_demo
CsvReader20_demo
CsvReaderBenchmarks
bin
Release
CsvReaderBenchmarks.exe
CsvReaderBenchmarks.vshost.exe
LumenWorks.Framework.IO.dll
data.rar
Properties
CsvReaderDemo
bin
Release
CsvReaderDemo.exe
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
CsvReaderBenchmarks
bin
Release
CsvReaderBenchmarks.exe
LumenWorks.Framework.IO.dll
data.rar
Properties
CsvReaderDemo
bin
Release
CsvReaderDemo.exe
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
CsvReaderBenchmarks
bin
Release
CsvReaderBenchmarks.exe
LumenWorks.Framework.IO.dll
data.rar
Properties
CsvReaderDemo
bin
Release
CsvReaderDemo.exe
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
CsvReader20_src
CsvReader20_src
CsvReader20_src
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
CsvReaderDemo
CsvReaderDemo
bin
Release
CsvReaderDemo.exe
CsvReaderDemo.vshost.exe
LumenWorks.Framework.IO.dll
data.rar
Properties
CsvReaderTests
bin
Release
CsvReaderTests.dll
LumenWorks.Framework.IO.dll
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
Csv
Exceptions
Resources
Properties
benchmark.xls
benchmark.xls
bin
Release
CsvReaderDemo.exe
CsvReaderDemo.vshost.exe
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
Properties
CsvReaderDemoWeb
bin
CsvReaderDemoWeb.dll
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
LumenWorks.Framework.Tests.Unit.dll
Properties
LumenWorks.Framework.IO
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.IO.XML
Csv
Events
Exceptions
Resources
LumenWorks.Framework.snk
Properties
LumenWorks.Framework.Tests.Unit
bin
Release
LumenWorks.Framework.IO.dll
LumenWorks.Framework.Tests.Unit.dll
IO
Csv
Properties
CsvReaderBenchmarks
bin
Release
CsvReaderBenchmarks.exe
CsvReaderBenchmarks.vshost.exe
LumenWorks.Framework.IO.dll
data.rar
Properties
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>LumenWorks.Framework.IO</name>
    </assembly>
    <members>
        <member name="T:LumenWorks.Framework.IO.Csv.MissingFieldAction">
            <summary>
            Specifies the action to take when a field is missing.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MissingFieldAction.ParseError">
            <summary>
            Treat as a parsing error.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MissingFieldAction.ReplaceByEmpty">
            <summary>
            Replaces by an empty value.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MissingFieldAction.ReplaceByNull">
            <summary>
            Replaces by a null value (<see langword="null"/>).
            </summary>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.MissingFieldCsvException">
            <summary>
            Represents the exception that is thrown when a there is a missing field in a record of the CSV file.
            </summary>
            <remarks>
            MissingFieldException would have been a better name, but there is already a <see cref="T:System.MissingFieldException"/>.
            </remarks>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.MalformedCsvException">
            <summary>
            Represents the exception that is thrown when a CSV file is malformed.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MalformedCsvException._message">
            <summary>
            Contains the message that describes the error.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MalformedCsvException._rawData">
            <summary>
            Contains the raw data when the error occured.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MalformedCsvException._currentFieldIndex">
            <summary>
            Contains the current field index.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MalformedCsvException._currentRecordIndex">
            <summary>
            Contains the current record index.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.MalformedCsvException._currentPosition">
            <summary>
            Contains the current position in the raw data.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor">
            <summary>
            Initializes a new instance of the MalformedCsvException class.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the MalformedCsvException class.
            </summary>
            <param name="message">The message that describes the error.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the MalformedCsvException class.
            </summary>
            <param name="message">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor(System.String,System.Int32,System.Int64,System.Int32)">
            <summary>
            Initializes a new instance of the MalformedCsvException class.
            </summary>
            <param name="rawData">The raw data when the error occured.</param>
            <param name="currentPosition">The current position in the raw data.</param>
            <param name="currentRecordIndex">The current record index.</param>
            <param name="currentFieldIndex">The current field index.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor(System.String,System.Int32,System.Int64,System.Int32,System.Exception)">
            <summary>
            Initializes a new instance of the MalformedCsvException class.
            </summary>
            <param name="rawData">The raw data when the error occured.</param>
            <param name="currentPosition">The current position in the raw data.</param>
            <param name="currentRecordIndex">The current record index.</param>
            <param name="currentFieldIndex">The current field index.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the MalformedCsvException class with serialized data.
            </summary>
            <param name="info">The <see cref="T:SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The <see cref="T:StreamingContext"/> that contains contextual information about the source or destination.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MalformedCsvException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            When overridden in a derived class, sets the <see cref="T:SerializationInfo"/> with information about the exception.
            </summary>
            <param name="info">The <see cref="T:SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The <see cref="T:StreamingContext"/> that contains contextual information about the source or destination.</param>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.MalformedCsvException.RawData">
            <summary>
            Gets the raw data when the error occured.
            </summary>
            <value>The raw data when the error occured.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.MalformedCsvException.CurrentPosition">
            <summary>
            Gets the current position in the raw data.
            </summary>
            <value>The current position in the raw data.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.MalformedCsvException.CurrentRecordIndex">
            <summary>
            Gets the current record index.
            </summary>
            <value>The current record index.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.MalformedCsvException.CurrentFieldIndex">
            <summary>
            Gets the current field index.
            </summary>
            <value>The current record index.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.MalformedCsvException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
            <value>A message that describes the current exception.</value>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class.
            </summary>
            <param name="message">The message that describes the error.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class.
            </summary>
            <param name="message">The message that describes the error.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor(System.String,System.Int32,System.Int64,System.Int32)">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class.
            </summary>
            <param name="rawData">The raw data when the error occured.</param>
            <param name="currentPosition">The current position in the raw data.</param>
            <param name="currentRecordIndex">The current record index.</param>
            <param name="currentFieldIndex">The current field index.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor(System.String,System.Int32,System.Int64,System.Int32,System.Exception)">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class.
            </summary>
            <param name="rawData">The raw data when the error occured.</param>
            <param name="currentPosition">The current position in the raw data.</param>
            <param name="currentRecordIndex">The current record index.</param>
            <param name="currentFieldIndex">The current field index.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.MissingFieldCsvException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the MissingFieldCsvException class with serialized data.
            </summary>
            <param name="info">The <see cref="T:SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The <see cref="T:StreamingContext"/> that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs">
            <summary>
            Provides data for the <see cref="M:CsvReader.ParseError"/> event.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs._error">
            <summary>
            Contains the error that occured.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs._action">
            <summary>
            Contains the action to take.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs.#ctor(LumenWorks.Framework.IO.Csv.MalformedCsvException,LumenWorks.Framework.IO.Csv.ParseErrorAction)">
            <summary>
            Initializes a new instance of the ParseErrorEventArgs class.
            </summary>
            <param name="error">The error that occured.</param>
            <param name="defaultAction">The default action to take.</param>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs.Error">
            <summary>
            Gets the error that occured.
            </summary>
            <value>The error that occured.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs.Action">
            <summary>
            Gets or sets the action to take.
            </summary>
            <value>The action to take.</value>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CachedCsvReader">
            <summary>
            Represents a reader that provides fast, cached, dynamic access to CSV data.
            </summary>
            <remarks>The number of records is limited to <see cref="F:System.Int32.MaxValue"/> - 1.</remarks>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CsvReader">
            <summary>
            Represents a reader that provides fast, non-cached, forward-only access to CSV data.  
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DefaultBufferSize">
            <summary>
            Defines the default buffer size.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DefaultDelimiter">
            <summary>
            Defines the default delimiter character separating each field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DefaultQuote">
            <summary>
            Defines the default quote character wrapping every field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DefaultEscape">
            <summary>
            Defines the default escape character letting insert quotation characters inside a quoted field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DefaultComment">
            <summary>
            Defines the default comment character indicating that a line is commented out.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._fieldHeaderComparer">
            <summary>
            Contains the field header comparer.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._reader">
            <summary>
            Contains the <see cref="T:TextReader"/> pointing to the CSV file.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._bufferSize">
            <summary>
            Contains the buffer size.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._comment">
            <summary>
            Contains the comment character indicating that a line is commented out.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._escape">
            <summary>
            Contains the escape character letting insert quotation characters inside a quoted field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._delimiter">
            <summary>
            Contains the delimiter character separating each field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._quote">
            <summary>
            Contains the quotation character wrapping every field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._trimSpaces">
            <summary>
            Indicates if spaces at the start and end of a field are trimmed.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._hasHeaders">
            <summary>
            Indicates if field names are located on the first non commented line.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._defaultParseErrorAction">
            <summary>
            Contains the default action to take when a parsing error has occured.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._missingFieldAction">
            <summary>
            Contains the action to take when a field is missing.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._supportsMultiline">
            <summary>
            Indicates if the reader supports multiline.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._skipEmptyLines">
            <summary>
            Indicates if the reader will skip empty lines.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._initialized">
            <summary>
            Indicates if the class is initialized.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._fieldHeaders">
            <summary>
            Contains the field headers.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._fieldHeaderIndexes">
            <summary>
            Contains the dictionary of field indexes by header. The key is the field name and the value is its index.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._currentRecordIndex">
            <summary>
            Contains the current record index in the CSV file.
            A value of <see cref="M:Int32.MinValue"/> means that the reader has not been initialized yet.
            Otherwise, a negative value means that no record has been read yet.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._nextFieldStart">
            <summary>
            Contains the starting position of the next unread field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._nextFieldIndex">
            <summary>
            Contains the index of the next unread field.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._fields">
            <summary>
            Contains the array of the field values for the current record.
            A null value indicates that the field have not been parsed.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._fieldCount">
            <summary>
            Contains the maximum number of fields to retrieve for each record.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._buffer">
            <summary>
            Contains the read buffer.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._bufferLength">
            <summary>
            Contains the current read buffer length.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._eof">
            <summary>
            Indicates if the end of the reader has been reached.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._firstRecordInCache">
            <summary>
            Indicates if the first record is in cache.
            This can happen when initializing a reader with no headers
            because one record must be read to get the field count automatically
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._missingFieldsFlag">
            <summary>
            Indicates if fields are missing for the current record.
            Resets after each successful record read.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Char,System.Char,System.Char,System.Boolean)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="quote">The quotation character wrapping every field (default is ''').</param>
            <param name="escape">
            The escape character letting insert quotation characters inside a quoted field (default is '\').
            If no escape character, set to '\0' to gain some performance.
            </param>
            <param name="comment">The comment character indicating that a line is commented out (default is '#').</param>
            <param name="trimSpaces"><see langword="true"/> if spaces at the start and end of a field are trimmed, otherwise, <see langword="false"/>. Default is <see langword="true"/>.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Char,System.Char,System.Char,System.Boolean,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="quote">The quotation character wrapping every field (default is ''').</param>
            <param name="escape">
            The escape character letting insert quotation characters inside a quoted field (default is '\').
            If no escape character, set to '\0' to gain some performance.
            </param>
            <param name="comment">The comment character indicating that a line is commented out (default is '#').</param>
            <param name="trimSpaces"><see langword="true"/> if spaces at the start and end of a field are trimmed, otherwise, <see langword="false"/>. Default is <see langword="true"/>.</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            	<paramref name="bufferSize"/> must be 1 or more.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.OnParseError(LumenWorks.Framework.IO.Csv.ParseErrorEventArgs)">
            <summary>
            Raises the <see cref="M:ParseError"/> event.
            </summary>
            <param name="e">The <see cref="T:LumenWorks.Framework.IO.Csv.ParseErrorEventArgs"/> that contains the event data.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.GetFieldHeaders">
            <summary>
            Gets the field headers.
            </summary>
            <returns>The field headers or an empty array if headers are not supported.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.EnsureInitialize">
            <summary>
            Ensures that the reader is initialized.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.GetFieldIndex(System.String)">
            <summary>
            Gets the field index for the provided header.
            </summary>
            <param name="header">The header to look for.</param>
            <returns>The field index for the provided header. -1 if not found.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.CopyCurrentRecordTo(System.String[])">
            <summary>
            Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array.
            </summary>
            <param name="array"> The one-dimensional <see cref="T:Array"/> that is the destination of the fields of the current record.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="array"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            	The number of fields in the record is greater than the available space from <paramref name="index"/> to the end of <paramref name="array"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.CopyCurrentRecordTo(System.String[],System.Int32)">
            <summary>
            Copies the field array of the current record to a one-dimensional array, starting at the beginning of the target array.
            </summary>
            <param name="array"> The one-dimensional <see cref="T:Array"/> that is the destination of the fields of the current record.</param>
            <param name="index">The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="array"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentOutOfRangeException">
            	<paramref name="index"/> is les than zero or is equal to or greater than the length <paramref name="array"/>. 
            </exception>
            <exception cref="T:System.InvalidOperationException">
            No current record.
            </exception>
            <exception cref="T:System.ArgumentException">
            	The number of fields in the record is greater than the available space from <paramref name="index"/> to the end of <paramref name="array"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.GetCurrentRawData">
            <summary>
            Gets the current raw CSV data.
            </summary>
            <remarks>Used for exception handling purpose.</remarks>
            <returns>The current raw CSV data.</returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.IsWhiteSpace(System.Char)">
            <summary>
            Indicates whether the specified Unicode character is categorized as white space.
            </summary>
            <param name="c">A Unicode character.</param>
            <returns><see langword="true"/> if <paramref name="c"/> is white space; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.MoveTo(System.Int64)">
            <summary>
            Moves to the specified record index.
            </summary>
            <param name="record">The record index.</param>
            <exception cref="T:ArgumentOutOfRangeException">
            	Record index must be > 0.
            </exception>
            <exception cref="T:InvalidOperationException">
            	Cannot move to a previous record in forward-only mode.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ParseNewLine(System.Int32@)">
            <summary>
            Parses a new line delimiter.
            </summary>
            <param name="pos">The starting position of the parsing. Will contain the resulting end position.</param>
            <returns><see langword="true"/> if a new line delimiter was found; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.IsNewLine(System.Int32)">
            <summary>
            Determines whether the character at the specified position is a new line delimiter.
            </summary>
            <param name="pos">The position of the character to verify.</param>
            <returns>
            	<see langword="true"/> if the character at the specified position is a new line delimiter; otherwise, <see langword="false"/>.
            </returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ReadBuffer">
            <summary>
            Fills the buffer with data from the reader.
            </summary>
            <returns><see langword="true"/> if data was successfully read; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ReadField(System.Int32,System.Boolean,System.Boolean)">
            <summary>
            Reads the field at the specified index.
            Any unread fields with an inferior index will also be read as part of the required parsing.
            </summary>
            <param name="field">The field index.</param>
            <param name="initializing">Indicates if the reader is currently initializing.</param>
            <param name="discardValue">Indicates if the value(s) are discarded.</param>
            <returns>
            The field at the specified index. 
            A <see langword="null"/> indicates that an error occured or that the last field has been reached during initialization.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            	<paramref name="field"/> is out of range.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            	There is no current record.
            </exception>
            <exception cref="T:LumenWorks.Framework.IO.Csv.MissingFieldCsvException">
            	The CSV data appears to be missing a field.
            </exception>
            <exception cref="T:LumenWorks.Framework.IO.Csv.MalformedCsvException">
            	The CSV data appears to be malformed.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ReadNextRecord">
            <summary>
            Reads the next record.
            </summary>
            <returns><see langword="true"/> if a record has been successfully reads; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ReadNextRecord(System.Boolean,System.Boolean)">
            <summary>
            Reads the next record.
            </summary>
            <param name="onlyReadHeaders">
            Indicates if the reader will proceed to the next record after having read headers.
            <see langword="true"/> if it stops after having read headers; otherwise, <see langword="false"/>.
            </param>
            <param name="skipToNextLine">
            Indicates if the reader will skip directly to the next line without parsing the current one. 
            To be used when an error occurs.
            </param>
            <returns><see langword="true"/> if a record has been successfully reads; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.SkipEmptyAndCommentedLines(System.Int32@)">
            <summary>
            Skips empty and commented lines.
            If the end of the buffer is reached, its content be discarded and filled again from the reader.
            </summary>
            <param name="pos">
            The position in the buffer where to start parsing. 
            Will contains the resulting position after the operation.
            </param>
            <returns><see langword="true"/> if the end of the reader has not been reached; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.DoSkipEmptyAndCommentedLines(System.Int32@)">
            <summary>
            <para>Worker method.</para>
            <para>Skips empty and commented lines.</para>
            </summary>
            <param name="pos">
            The position in the buffer where to start parsing. 
            Will contains the resulting position after the operation.
            </param>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.SkipWhiteSpaces(System.Int32@)">
            <summary>
            Skips whitespace characters.
            </summary>
            <param name="pos">The starting position of the parsing. Will contain the resulting end position.</param>
            <returns><see langword="true"/> if the end of the reader has not been reached; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.SkipToNextLine(System.Int32@)">
            <summary>
            Skips ahead to the next NewLine character.
            If the end of the buffer is reached, its content be discarded and filled again from the reader.
            </summary>
            <param name="pos">
            The position in the buffer where to start parsing. 
            Will contains the resulting position after the operation.
            </param>
            <returns><see langword="true"/> if the end of the reader has not been reached; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.HandleParseError(LumenWorks.Framework.IO.Csv.MalformedCsvException,System.Int32@)">
            <summary>
            Handles a parsing error.
            </summary>
            <param name="error">The parsing error that occured.</param>
            <param name="pos">The current position in the buffer.</param>
            <exception cref="T:System.ArgumentNullException">
            <paramref name="error"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.HandleMissingField(System.String,System.Int32,System.Int32@)">
            <summary>
            Handles a missing field error.
            </summary>
            <param name="value">The partially parsed value, if available.</param>
            <param name="fieldIndex">The missing field index.</param>
            <param name="currentPosition">The current position in the raw data.</param>
            <returns>
            The resulting value according to <see cref="M:MissingFieldAction"/>.
            If the action is set to <see cref="T:MissingFieldAction.TreatAsParseError"/>,
            then the parse error will be handled according to <see cref="P:LumenWorks.Framework.IO.Csv.CsvReader.DefaultParseErrorAction"/>.
            </returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.ValidateDataReader(LumenWorks.Framework.IO.Csv.CsvReader.DataReaderValidations)">
            <summary>
            Validates the state of the data reader.
            </summary>
            <param name="validations">The validations to accomplish.</param>
            <exception cref="T:System.InvalidOperationException">
            No current record.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            This operation is invalid when the reader is closed.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.CopyFieldToArray(System.Int32,System.Int64,System.Array,System.Int32,System.Int32)">
            <summary>
            Copy the value of the specified field to an array.
            </summary>
            <param name="field">The index of the field.</param>
            <param name="fieldOffset">The offset in the field value.</param>
            <param name="destinationArray">The destination array where the field value will be copied.</param>
            <param name="destinationOffset">The destination array offset.</param>
            <param name="length">The number of characters to copy from the field value.</param>
            <returns></returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.GetEnumerator">
            <summary>
            Returns an <see cref="T:RecordEnumerator"/>  that can iterate through CSV records.
            </summary>
            <returns>An <see cref="T:RecordEnumerator"/>  that can iterate through CSV records.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.System#Collections#Generic#IEnumerable{System#String[]}#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.Generics.IEnumerator"/>  that can iterate through CSV records.
            </summary>
            <returns>An <see cref="T:System.Collections.Generics.IEnumerator"/>  that can iterate through CSV records.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/>  that can iterate through CSV records.
            </summary>
            <returns>An <see cref="T:System.Collections.IEnumerator"/>  that can iterate through CSV records.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._isDisposed">
            <summary>
            Contains the disposed status flag.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader._lock">
            <summary>
            Contains the locking object for multi-threading purpose.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.OnDisposed(System.EventArgs)">
            <summary>
            Raises the <see cref="M:Disposed"/> event.
            </summary>
            <param name="e">A <see cref="T:System.EventArgs"/> that contains the event data.</param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.CheckDisposed">
            <summary>
            Checks if the instance has been disposed of, and if it has, throws an <see cref="T:System.ComponentModel.ObjectDisposedException"/>; otherwise, does nothing.
            </summary>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            	The instance has been disposed of.
            </exception>
            <remarks>
            	Derived classes should call this method at the start of all methods and properties that should not be accessed after a call to <see cref="M:Dispose()"/>.
            </remarks>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.Dispose">
            <summary>
            Releases all resources used by the instance.
            </summary>
            <remarks>
            	Calls <see cref="M:Dispose(Boolean)"/> with the disposing parameter set to <see langword="true"/> to free unmanaged and managed resources.
            </remarks>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by this instance and optionally releases the managed resources.
            </summary>
            <param name="disposing">
            	<see langword="true"/> to release both managed and unmanaged resources; <see langword="false"/> to release only unmanaged resources.
            </param>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.Finalize">
            <summary>
            Releases unmanaged resources and performs other cleanup operations before the instance is reclaimed by garbage collection.
            </summary>
        </member>
        <member name="E:LumenWorks.Framework.IO.Csv.CsvReader.ParseError">
            <summary>
            Occurs when there is an error while parsing the CSV stream.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Comment">
            <summary>
            Gets the comment character indicating that a line is commented out.
            </summary>
            <value>The comment character indicating that a line is commented out.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Escape">
            <summary>
            Gets the escape character letting insert quotation characters inside a quoted field.
            </summary>
            <value>The escape character letting insert quotation characters inside a quoted field.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Delimiter">
            <summary>
            Gets the delimiter character separating each field.
            </summary>
            <value>The delimiter character separating each field.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Quote">
            <summary>
            Gets the quotation character wrapping every field.
            </summary>
            <value>The quotation character wrapping every field.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.HasHeaders">
            <summary>
            Indicates if field names are located on the first non commented line.
            </summary>
            <value><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.TrimSpaces">
            <summary>
            Indicates if spaces at the start and end of a field are trimmed.
            </summary>
            <value><see langword="true"/> if spaces at the start and end of a field are trimmed, otherwise, <see langword="false"/>.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.BufferSize">
            <summary>
            Gets the buffer size.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.DefaultParseErrorAction">
            <summary>
            Gets or sets the default action to take when a parsing error has occured.
            </summary>
            <value>The default action to take when a parsing error has occured.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.MissingFieldAction">
            <summary>
            Gets or sets the action to take when a field is missing.
            </summary>
            <value>The action to take when a field is missing.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.SupportsMultiline">
            <summary>
            Gets or sets a value indicating if the reader supports multiline fields.
            </summary>
            <value>A value indicating if the reader supports multiline field.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.SkipEmptyLines">
            <summary>
            Gets or sets a value indicating if the reader will skip empty lines.
            </summary>
            <value>A value indicating if the reader will skip empty lines.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.FieldCount">
            <summary>
            Gets the maximum number of fields to retrieve for each record.
            </summary>
            <value>The maximum number of fields to retrieve for each record.</value>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.EndOfStream">
            <summary>
            Gets a value that indicates whether the current stream position is at the end of the stream.
            </summary>
            <value><see langword="true"/> if the current stream position is at the end of the stream; otherwise <see langword="false"/>.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.CurrentRecordIndex">
            <summary>
            Gets the current record index in the CSV file.
            </summary>
            <value>The current record index in the CSV file.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Item(System.Int32,System.String)">
            <summary>
            Gets the field with the specified name and record position. <see cref="M:hasHeaders"/> must be <see langword="true"/>.
            </summary>
            <value>
            The field with the specified name and record position.
            </value>
            <exception cref="T:ArgumentNullException">
            	<paramref name="field"/> is <see langword="null"/> or an empty string.
            </exception>
            <exception cref="T:InvalidOperationException">
            The CSV does not have headers (<see cref="M:HasHeaders"/> property is <see langword="false"/>).
            </exception>
            <exception cref="T:ArgumentException">
            	<paramref name="field"/> not found.
            </exception>
            <exception cref="T:ArgumentOutOfRangeException">
            	Record index must be > 0.
            </exception>
            <exception cref="T:InvalidOperationException">
            	Cannot move to a previous record in forward-only mode.
            </exception>
            <exception cref="T:EndOfStreamException">
            	Cannot read record at <paramref name="record"/>.
            </exception>
            <exception cref="T:MalformedCsvException">
            	The CSV appears to be corrupt at the current position.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Item(System.Int32,System.Int32)">
            <summary>
            Gets the field at the specified index and record position.
            </summary>
            <value>
            The field at the specified index and record position.
            A <see langword="null"/> is returned if the field cannot be found for the record.
            </value>
            <exception cref="T:ArgumentOutOfRangeException">
            	<paramref name="field"/> must be included in [0, <see cref="M:FieldCount"/>[.
            </exception>
            <exception cref="T:ArgumentOutOfRangeException">
            	Record index must be > 0.
            </exception>
            <exception cref="T:InvalidOperationException">
            	Cannot move to a previous record in forward-only mode.
            </exception>
            <exception cref="T:EndOfStreamException">
            	Cannot read record at <paramref name="record"/>.
            </exception>
            <exception cref="T:MalformedCsvException">
            	The CSV appears to be corrupt at the current position.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Item(System.String)">
            <summary>
            Gets the field with the specified name. <see cref="M:hasHeaders"/> must be <see langword="true"/>.
            </summary>
            <value>
            The field with the specified name.
            </value>
            <exception cref="T:ArgumentNullException">
            	<paramref name="field"/> is <see langword="null"/> or an empty string.
            </exception>
            <exception cref="T:InvalidOperationException">
            The CSV does not have headers (<see cref="M:HasHeaders"/> property is <see langword="false"/>).
            </exception>
            <exception cref="T:ArgumentException">
            	<paramref name="field"/> not found.
            </exception>
            <exception cref="T:MalformedCsvException">
            	The CSV appears to be corrupt at the current position.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.Item(System.Int32)">
            <summary>
            Gets the field at the specified index.
            </summary>
            <value>The field at the specified index.</value>
            <exception cref="T:ArgumentOutOfRangeException">
            	<paramref name="field"/> must be included in [0, <see cref="M:FieldCount"/>[.
            </exception>
            <exception cref="T:InvalidOperationException">
            	No record read yet. Call ReadLine() first.
            </exception>
            <exception cref="T:MalformedCsvException">
            	The CSV appears to be corrupt at the current position.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="E:LumenWorks.Framework.IO.Csv.CsvReader.Disposed">
            <summary>
            Occurs when the instance is disposed of.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.IsDisposed">
            <summary>
            Gets a value indicating whether the instance has been disposed of.
            </summary>
            <value>
            	<see langword="true"/> if the instance has been disposed of; otherwise, <see langword="false"/>.
            </value>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator">
            <summary>
            Supports a simple iteration over the records of a <see cref="T:CsvReader"/>.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator._reader">
            <summary>
            Contains the enumerated <see cref="T:CsvReader"/>.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator._current">
            <summary>
            Contains the current record.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator._currentRecordIndex">
            <summary>
            Contains the current record index.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.#ctor(LumenWorks.Framework.IO.Csv.CsvReader)">
            <summary>
            Initializes a new instance of the <see cref="T:RecordEnumerator"/> class.
            </summary>
            <param name="reader">The <see cref="T:CsvReader"/> to iterate over.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next record of the CSV.
            </summary>
            <returns><see langword="true"/> if the enumerator was successfully advanced to the next record, <see langword="false"/> if the enumerator has passed the end of the CSV.</returns>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before the first record in the CSV.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.Current">
            <summary>
            Gets the current record.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CsvReader.RecordEnumerator.System#Collections#IEnumerator#Current">
            <summary>
            Gets the current record.
            </summary>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CsvReader.DataReaderValidations">
            <summary>
            Defines the data reader validations.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DataReaderValidations.None">
            <summary>
            No validation.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DataReaderValidations.IsInitialized">
            <summary>
            Validate that the data reader is initialized.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CsvReader.DataReaderValidations.IsNotClosed">
            <summary>
            Validate that the data reader is not closed.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader._records">
            <summary>
            Contains the cached records.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader._currentRecordIndex">
            <summary>
            Contains the current record index (inside the cached records array).
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader._readingStream">
            <summary>
            Indicates if a new record is being read from the CSV stream.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader._bindingList">
            <summary>
            Contains the binding list linked to this reader.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Char,System.Char,System.Char,System.Boolean)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="quote">The quotation character wrapping every field (default is ''').</param>
            <param name="escape">
            The escape character letting insert quotation characters inside a quoted field (default is '\').
            If no escape character, set to '\0' to gain some performance.
            </param>
            <param name="comment">The comment character indicating that a line is commented out (default is '#').</param>
            <param name="trimSpaces"><see langword="true"/> if spaces at the start and end of a field are trimmed, otherwise, <see langword="false"/>. Default is <see langword="true"/>.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:ArgumentException">
            	Cannot read from <paramref name="reader"/>.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.#ctor(System.IO.TextReader,System.Boolean,System.Char,System.Char,System.Char,System.Char,System.Boolean,System.Int32)">
            <summary>
            Initializes a new instance of the CsvReader class.
            </summary>
            <param name="reader">A <see cref="T:TextReader"/> pointing to the CSV file.</param>
            <param name="hasHeaders"><see langword="true"/> if field names are located on the first non commented line, otherwise, <see langword="false"/>.</param>
            <param name="delimiter">The delimiter character separating each field (default is ',').</param>
            <param name="quote">The quotation character wrapping every field (default is ''').</param>
            <param name="escape">
            The escape character letting insert quotation characters inside a quoted field (default is '\').
            If no escape character, set to '\0' to gain some performance.
            </param>
            <param name="comment">The comment character indicating that a line is commented out (default is '#').</param>
            <param name="trimSpaces"><see langword="true"/> if spaces at the start and end of a field are trimmed, otherwise, <see langword="false"/>. Default is <see langword="true"/>.</param>
            <param name="bufferSize">The buffer size in bytes.</param>
            <exception cref="T:ArgumentNullException">
            	<paramref name="reader"/> is a <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            	<paramref name="bufferSize"/> must be 1 or more.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.ReadToEnd">
            <summary>
            Reads the CSV stream from the current position to the end of the stream.
            </summary>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.ReadNextRecord(System.Boolean,System.Boolean)">
            <summary>
            Reads the next record.
            </summary>
            <param name="onlyReadHeaders">
            Indicates if the reader will proceed to the next record after having read headers.
            <see langword="true"/> if it stops after having read headers; otherwise, <see langword="false"/>.
            </param>
            <param name="skipToNextLine">
            Indicates if the reader will skip directly to the next line without parsing the current one. 
            To be used when an error occurs.
            </param>
            <returns><see langword="true"/> if a record has been successfully reads; otherwise, <see langword="false"/>.</returns>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            The instance has been disposed of.
            </exception>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.MoveToStart">
            <summary>
            Moves before the first record.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.MoveToLastCachedRecord">
            <summary>
            Moves to the last record read so far.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.MoveTo(System.Int64)">
            <summary>
            Moves to the specified record index.
            </summary>
            <param name="record">The record index.</param>
            <exception cref="T:ArgumentOutOfRangeException">
            	Record index must be > 0.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            	The instance has been disposed of.
            </exception>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CachedCsvReader.CurrentRecordIndex">
            <summary>
            Gets the current record index in the CSV file.
            </summary>
            <value>The current record index in the CSV file.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CachedCsvReader.EndOfStream">
            <summary>
            Gets a value that indicates whether the current stream position is at the end of the stream.
            </summary>
            <value><see langword="true"/> if the current stream position is at the end of the stream; otherwise <see langword="false"/>.</value>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CachedCsvReader.Item(System.Int32)">
            <summary>
            Gets the field at the specified index.
            </summary>
            <value>The field at the specified index.</value>
            <exception cref="T:ArgumentOutOfRangeException">
            	<paramref name="field"/> must be included in [0, <see cref="M:FieldCount"/>[.
            </exception>
            <exception cref="T:InvalidOperationException">
            	No record read yet. Call ReadLine() first.
            </exception>
            <exception cref="T:LumenWorks.Framework.IO.Csv.MissingFieldCsvException">
            	The CSV data appears to be missing a field.
            </exception>
            <exception cref="T:MalformedCsvException">
            	The CSV appears to be corrupt at the current position.
            </exception>
            <exception cref="T:System.ComponentModel.ObjectDisposedException">
            	The instance has been disposed of.
            </exception>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvRecordComparer">
            <summary>
            Represents a CSV record comparer.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvRecordComparer._field">
            <summary>
            Contains the field index of the values to compare.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvRecordComparer._direction">
            <summary>
            Contains the sort direction.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvRecordComparer.#ctor(System.Int32,System.ComponentModel.ListSortDirection)">
            <summary>
            Initializes a new instance of the CsvRecordComparer class.
            </summary>
            <param name="field">The field index of the values to compare.</param>
            <param name="direction">The sort direction.</param>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList">
            <summary>
            Represents a binding list wrapper for a CSV reader.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList._csv">
            <summary>
            Contains the linked CSV reader.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList._count">
            <summary>
            Contains the cached record count.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList._properties">
            <summary>
            Contains the cached property descriptors.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList._sort">
            <summary>
            Contains the current sort property.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList._direction">
            <summary>
            Contains the current sort direction.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvBindingList.#ctor(LumenWorks.Framework.IO.Csv.CachedCsvReader)">
            <summary>
            Initializes a new instance of the CsvBindingList class.
            </summary>
            <param name="csv"></param>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvPropertyDescriptor">
            <summary>
            Represents a CSV field property descriptor.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvPropertyDescriptor._index">
            <summary>
            Contains the field index.
            </summary>
        </member>
        <member name="M:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvPropertyDescriptor.#ctor(System.String,System.Int32)">
            <summary>
            Initializes a new instance of the CsvPropertyDescriptor class.
            </summary>
            <param name="fieldName">The field name.</param>
            <param name="index">The field index.</param>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.CachedCsvReader.CsvPropertyDescriptor.Index">
            <summary>
            Gets the field index.
            </summary>
            <value>The field index.</value>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.BufferSizeTooSmall">
            <summary>
              Looks up a localized string similar to Buffer size must be 1 or more..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.CannotMovePreviousRecordInForwardOnly">
            <summary>
              Looks up a localized string similar to Cannot move to a previous record in forward-only mode..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.CannotReadRecordAtIndex">
            <summary>
              Looks up a localized string similar to Cannot read record at index &apos;{0}&apos;..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.EnumerationFinishedOrNotStarted">
            <summary>
              Looks up a localized string similar to Enumeration has either not started or has already finished..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.EnumerationVersionCheckFailed">
            <summary>
              Looks up a localized string similar to Collection was modified; enumeration operation may not execute..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.FieldHeaderNotFound">
            <summary>
              Looks up a localized string similar to &apos;{0}&apos; field header not found..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.FieldIndexOutOfRange">
            <summary>
              Looks up a localized string similar to Field index must be included in [0, FieldCount[. Specified field index was : &apos;{0}&apos;..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.MalformedCsvException">
            <summary>
              Looks up a localized string similar to The CSV appears to be corrupt near record &apos;{0}&apos; field &apos;{1} at position &apos;{2}&apos;. Current raw data : &apos;{3}&apos;..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.MissingFieldActionNotSupported">
            <summary>
              Looks up a localized string similar to &apos;{0}&apos; is not a supported missing field action..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.NoCurrentRecord">
            <summary>
              Looks up a localized string similar to No current record..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.NoHeaders">
            <summary>
              Looks up a localized string similar to The CSV does not have headers (CsvReader.HasHeaders property is false)..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.NotEnoughSpaceInArray">
            <summary>
              Looks up a localized string similar to The number of fields in the record is greater than the available space from index to the end of the destination array..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.ParseErrorActionInvalidInsideParseErrorEvent">
            <summary>
              Looks up a localized string similar to &apos;{0}&apos; is not a valid ParseErrorAction while inside a ParseError event..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.ParseErrorActionNotSupported">
            <summary>
              Looks up a localized string similar to &apos;{0}&apos; is not a supported ParseErrorAction..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.ReaderClosed">
            <summary>
              Looks up a localized string similar to This operation is invalid when the reader is closed..
            </summary>
        </member>
        <member name="P:LumenWorks.Framework.IO.Csv.Resources.ExceptionMessage.RecordIndexLessThanZero">
            <summary>
              Looks up a localized string similar to Record index must be 0 or more..
            </summary>
        </member>
        <member name="T:LumenWorks.Framework.IO.Csv.ParseErrorAction">
            <summary>
            Specifies the action to take when a parsing error has occured.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.ParseErrorAction.RaiseEvent">
            <summary>
            Raises the <see cref="M:CsvReader.ParseError"/> event.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.ParseErrorAction.AdvanceToNextLine">
            <summary>
            Tries to advance to next line.
            </summary>
        </member>
        <member name="F:LumenWorks.Framework.IO.Csv.ParseErrorAction.ThrowException">
            <summary>
            Throws an exception.
            </summary>
        </member>
    </members>
</doc>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License

Share

About the Author

Sebastien Lorion
Architect
Canada Canada
Sébastien Lorion is software architect as day job.

He is also a musician, actually singing outside the shower Smile | :)

He needs constant mental and emotional stimulation, so all of this might change someday ...

You may also be interested in...

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web06 | 2.8.181207.3 | Last Updated 13 Jan 2016
Article Copyright 2005 by Sebastien Lorion
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid