Vince's CSV Parser
csv::internals::IBasicCSVParser Class Referenceabstract

Abstract base class which provides CSV parsing logic. More...

#include <basic_csv_parser.hpp>

Inherited by csv::internals::MmapParser, and csv::internals::StreamParser< TStream >.

Public Member Functions

 IBasicCSVParser (const CSVFormat &, const ColNamesPtr &)
 
 IBasicCSVParser (const ParseFlagMap &parse_flags, const WhitespaceMap &ws_flags)
 
bool eof ()
 Whether or not we have reached the end of source.
 
virtual void next (size_t bytes)=0
 Parse the next block of data.
 
void end_feed ()
 Indicate the last block of data has been parsed.
 
CONSTEXPR_17 ParseFlags parse_flag (const char ch) const noexcept
 
CONSTEXPR_17 ParseFlags compound_parse_flag (const char ch) const noexcept
 
CONSTEXPR bool utf8_bom () const
 Whether or not this CSV has a UTF-8 byte order mark.
 
void set_output (RowCollection &rows)
 

Protected Member Functions

CONSTEXPR bool no_chunk () const
 Whether or not source needs to be read in chunks.
 
size_t parse ()
 Parse the current chunk of data *. More...
 
void reset_data_ptr ()
 Create a new RawCSVDataPtr for a new chunk of data.
 

Protected Attributes

Current Parser State
CSVRow current_row
 
RawCSVDataPtr data_ptr = nullptr
 
ColNamesPtr _col_names = nullptr
 
CSVFieldListfields = nullptr
 
int field_start = UNINITIALIZED_FIELD
 
size_t field_length = 0
 
ParseFlagMap _parse_flags
 An array where the (i + 128)th slot gives the ParseFlags for ASCII character i.
 
Current Stream/File State
bool _eof = false
 
size_t source_size = 0
 The size of the incoming CSV.
 

Detailed Description

Abstract base class which provides CSV parsing logic.

Concrete implementations may customize this logic across different input sources, such as memory mapped files, stringstreams, etc...

Definition at line 195 of file basic_csv_parser.hpp.

Member Function Documentation

◆ parse()

size_t csv::internals::IBasicCSVParser::parse ( )
protected

Parse the current chunk of data *.

Returns
How many character were read that are part of complete rows
The number of characters parsed that belong to complete rows

Definition at line 121 of file basic_csv_parser.cpp.


The documentation for this class was generated from the following files: