// 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 System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading;
namespace CsvHelper
{
///
/// Defines methods used to read parsed data
/// from a CSV file.
///
public interface IReader : IReaderRow, IDisposable
{
///
/// Reads the header record without reading the first row.
///
/// True if there are more records, otherwise false.
bool ReadHeader();
///
/// Advances the reader to the next record. This will not read headers.
/// You need to call then
/// for the headers to be read.
///
/// True if there are more records, otherwise false.
bool Read();
///
/// Advances the reader to the next record. This will not read headers.
/// You need to call then
/// for the headers to be read.
///
/// True if there are more records, otherwise false.
Task ReadAsync();
///
/// Gets all the records in the CSV file and
/// converts each to T. The Read method
/// should not be used when using this.
///
/// The of the record.
/// An of records.
IEnumerable GetRecords();
///
/// Gets all the records in the CSV file and converts
/// each to T. The read method
/// should not be used when using this.
///
/// The of the record.
/// The anonymous type definition to use for the records.
/// An of records.
IEnumerable GetRecords(T anonymousTypeDefinition);
///
/// Gets all the records in the CSV file and
/// converts each to T. The Read method
/// should not be used when using this.
///
/// The of the record.
/// An of records.
IEnumerable