Vince's CSV Parser
Loading...
Searching...
No Matches
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 *.
 
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 90 of file basic_csv_parser.hpp.

Constructor & Destructor Documentation

◆ IBasicCSVParser() [1/2]

csv::internals::IBasicCSVParser::IBasicCSVParser ( const CSVFormat format,
const ColNamesPtr &  col_names 
)

Definition at line 37 of file basic_csv_parser.cpp.

◆ IBasicCSVParser() [2/2]

csv::internals::IBasicCSVParser::IBasicCSVParser ( const ParseFlagMap parse_flags,
const WhitespaceMap ws_flags 
)
inline

Definition at line 94 of file basic_csv_parser.hpp.

◆ ~IBasicCSVParser()

virtual csv::internals::IBasicCSVParser::~IBasicCSVParser ( )
inlinevirtual

Definition at line 97 of file basic_csv_parser.hpp.

Member Function Documentation

◆ compound_parse_flag()

CONSTEXPR_17 ParseFlags csv::internals::IBasicCSVParser::compound_parse_flag ( const char  ch) const
inlinenoexcept

Definition at line 112 of file basic_csv_parser.hpp.

◆ end_feed()

void csv::internals::IBasicCSVParser::end_feed ( )

Indicate the last block of data has been parsed.

Definition at line 53 of file basic_csv_parser.cpp.

◆ eof()

bool csv::internals::IBasicCSVParser::eof ( )
inline

Whether or not we have reached the end of source.

Definition at line 100 of file basic_csv_parser.hpp.

◆ next()

virtual void csv::internals::IBasicCSVParser::next ( size_t  bytes)
pure virtual

Parse the next block of data.

Implemented in csv::internals::MmapParser, and csv::internals::StreamParser< TStream >.

◆ no_chunk()

CONSTEXPR bool csv::internals::IBasicCSVParser::no_chunk ( ) const
inlineprotected

Whether or not source needs to be read in chunks.

Definition at line 144 of file basic_csv_parser.hpp.

◆ 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 124 of file basic_csv_parser.cpp.

◆ parse_flag()

CONSTEXPR_17 ParseFlags csv::internals::IBasicCSVParser::parse_flag ( const char  ch) const
inlinenoexcept

Definition at line 108 of file basic_csv_parser.hpp.

◆ reset_data_ptr()

void csv::internals::IBasicCSVParser::reset_data_ptr ( )
protected

Create a new RawCSVDataPtr for a new chunk of data.

Definition at line 211 of file basic_csv_parser.cpp.

◆ set_output()

void csv::internals::IBasicCSVParser::set_output ( RowCollection rows)
inline

Definition at line 119 of file basic_csv_parser.hpp.

◆ utf8_bom()

CONSTEXPR bool csv::internals::IBasicCSVParser::utf8_bom ( ) const
inline

Whether or not this CSV has a UTF-8 byte order mark.

Definition at line 117 of file basic_csv_parser.hpp.

Member Data Documentation

◆ _col_names

ColNamesPtr csv::internals::IBasicCSVParser::_col_names = nullptr
protected

Definition at line 126 of file basic_csv_parser.hpp.

◆ _eof

bool csv::internals::IBasicCSVParser::_eof = false
protected

Definition at line 137 of file basic_csv_parser.hpp.

◆ _parse_flags

ParseFlagMap csv::internals::IBasicCSVParser::_parse_flags
protected

An array where the (i + 128)th slot gives the ParseFlags for ASCII character i.

Definition at line 132 of file basic_csv_parser.hpp.

◆ current_row

CSVRow csv::internals::IBasicCSVParser::current_row
protected

Definition at line 124 of file basic_csv_parser.hpp.

◆ data_ptr

RawCSVDataPtr csv::internals::IBasicCSVParser::data_ptr = nullptr
protected

Definition at line 125 of file basic_csv_parser.hpp.

◆ field_length

size_t csv::internals::IBasicCSVParser::field_length = 0
protected

Definition at line 129 of file basic_csv_parser.hpp.

◆ field_start

int csv::internals::IBasicCSVParser::field_start = UNINITIALIZED_FIELD
protected

Definition at line 128 of file basic_csv_parser.hpp.

◆ fields

CSVFieldList* csv::internals::IBasicCSVParser::fields = nullptr
protected

Definition at line 127 of file basic_csv_parser.hpp.

◆ source_size

size_t csv::internals::IBasicCSVParser::source_size = 0
protected

The size of the incoming CSV.

Definition at line 140 of file basic_csv_parser.hpp.


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