// Copyright 2009-2022 Josh Close
// This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0.
// See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0.
// https://github.com/JoshClose/CsvHelper
using CsvHelper.Delegates;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
namespace CsvHelper.Configuration
{
///
/// Configuration used for the .
///
public interface IParserConfiguration
{
///
/// Gets the culture info used to read an write CSV files.
///
CultureInfo CultureInfo { get; }
///
/// Cache fields that are created when parsing.
/// Default is false.
///
bool CacheFields { get; }
///
/// The newline string to use. Default is \r\n (CRLF).
/// When writing, this value is always used.
/// When reading, this value is only used if explicitly set.
/// If not set, the parser uses one of \r\n, \r, or \n.
///
string NewLine { get; }
///
/// A value indicating if was set.
///
///
/// true if was set. false if is the default.
///
bool IsNewLineSet { get; }
///
/// The mode.
/// See for more details.
///
CsvMode Mode { get; }
///
/// Gets the size of the buffer
/// used for parsing and writing CSV files.
/// Default is 0x1000.
///
int BufferSize { get; }
///
/// The size of the buffer used when processing fields.
/// Default is 1024.
///
int ProcessFieldBufferSize { get; }
///
/// Gets a value indicating whether the number of bytes should
/// be counted while parsing. Default is false. This will slow down parsing
/// because it needs to get the byte count of every char for the given encoding.
/// The needs to be set correctly for this to be accurate.
///
bool CountBytes { get; }
///
/// Gets the encoding used when counting bytes.
///
Encoding Encoding { get; }
///
/// Gets the function that is called when bad field data is found. A field
/// has bad data if it contains a quote and the field is not quoted (escaped).
/// You can supply your own function to do other things like logging the issue
/// instead of throwing an exception.
///
BadDataFound BadDataFound { get; }
///
/// Gets or sets the maximum size of a field.
/// Defaults to 0, indicating maximum field size is not checked.
///
double MaxFieldSize { get; }
///
/// Gets a value indicating if a line break found in a quote field should
/// be considered bad data. true to consider a line break bad data, otherwise false.
/// Defaults to false.
///
bool LineBreakInQuotedFieldIsBadData { get; }
///
/// Gets the character used to denote
/// a line that is commented out. Default is '#'.
///
char Comment { get; }
///
/// Gets a value indicating if comments are allowed.
/// true to allow commented out lines, otherwise false.
///
bool AllowComments { get; }
///
/// Gets a value indicating if blank lines
/// should be ignored when reading.
/// true to ignore, otherwise false. Default is true.
///
bool IgnoreBlankLines { get; }
///
/// Gets the character used to quote fields.
/// Default is '"'.
///
char Quote { get; }
///
/// The delimiter used to separate fields.
/// Default is .
///
string Delimiter { get; }
///
/// Detect the delimiter instead of using the delimiter from configuration.
/// Default is false.
///
bool DetectDelimiter { get; }
///
/// Gets the function that is called when is enabled.
///
GetDelimiter GetDelimiter { get; }
///
/// The possible delimiter values used when detecting the delimiter.
/// Default is [",", ";", "|", "\t"].
///
string[] DetectDelimiterValues { get; }
///
/// The character used to escape characters.
/// Default is '"'.
///
char Escape { get; }
///
/// Gets the field trimming options.
///
TrimOptions TrimOptions { get; }
///
/// Characters considered whitespace.
/// Used when trimming fields.
/// Default is [' '].
///
char[] WhiteSpaceChars { get; }
///
/// A value indicating if exception messages contain raw CSV data.
/// true if exception contain raw CSV data, otherwise false.
/// Default is true.
///
bool ExceptionMessagesContainRawData { get; }
///
/// Validates the configuration.
///
void Validate();
}
}