Vince's CSV Parser
Loading...
Searching...
No Matches
csv::DataFrameCell Class Reference

Inherits csv::CSVField.

Public Member Functions

 DataFrameCell (const DataFrameCell &other)
 
 DataFrameCell (DataFrameCell &&other) noexcept
 
 DataFrameCell (const CSVRow *_row, RowOverlay *_row_overlay, size_t _col_index)
 
 DataFrameCell (const CSVRow *_row, const RowOverlay *_row_overlay, size_t _col_index)
 
DataFrameCelloperator= (const DataFrameCell &other)
 
DataFrameCelloperator= (DataFrameCell &&other) noexcept
 
DataFrameCelloperator= (csv::string_view value)
 
template<typename T = std::string>
get () const
 Const-friendly read access for proxy use in column iteration and callbacks.
 
bool is_null () const noexcept
 
bool is_str () const noexcept
 
bool is_num () const noexcept
 
bool is_int () const noexcept
 
bool is_float () const noexcept
 
DataType type () const noexcept
 
template<typename T >
bool try_get (T &out) const noexcept
 
template<typename T = std::string>
get ()
 Returns the value casted to the requested type, performing type checking before.
 
template<>
long double get ()
 Retrieve this field's value as a long double.
 
CONSTEXPR csv::string_view get_sv () const noexcept
 Return a string view over the field's contents.
 
bool is_float () noexcept
 Returns true if field is a floating point value.
 
bool is_int () noexcept
 Returns true if field is an integer.
 
bool is_null () noexcept
 Returns true if field is an empty string or string of whitespace characters.
 
bool is_num () noexcept
 Returns true if field is an integer or float.
 
bool is_str () noexcept
 Returns true if field is a non-numeric, non-empty string.
 
template<typename T = std::string>
bool try_get (T &out) noexcept
 Non-throwing equivalent of get().
 
template<>
bool try_get (long double &out) noexcept
 Non-throwing retrieval of field as long double.
 
DataType type () noexcept
 Return the type of the underlying CSV data.
 
- Public Member Functions inherited from csv::CSVField
constexpr CSVField (csv::string_view _sv) noexcept
 Constructs a CSVField from a string_view.
 
 CSVField (csv::string_view _sv, const internals::CSVFieldScalar &scalar) noexcept
 
 operator csv::string_view () const noexcept
 
 operator std::string () const
 
template<typename T = std::string>
get ()
 Returns the value casted to the requested type, performing type checking before.
 
template<typename T = std::string>
std::expected< T, CSVConversionErroras ()
 Return this field as T, preserving conversion failure as CSVConversionError.
 
template<typename T = std::string>
bool try_get (T &out) noexcept
 Non-throwing equivalent of get().
 
template<typename T >
 operator std::optional< T > ()
 Convert this field to std::optional<T>, returning std::nullopt when conversion fails.
 
template<typename T = long long>
bool try_parse_hex (T &parsedValue)
 Parse a hexadecimal value, returning false if the value is not hex.
 
bool try_parse_decimal (long double &dVal, const char decimalSymbol='.')
 Attempts to parse a decimal (or integer) value using the given symbol, returning true if the value is numeric.
 
bool try_parse_timestamp (std::uint64_t &out) noexcept
 Parse this field as Unix milliseconds.
 
template<typename T >
bool try_parse_timestamp (T &out) noexcept
 Parse this field as Unix milliseconds in a 64-bit unsigned integer.
 
template<typename Rep , typename Period >
bool try_parse_timestamp (std::chrono::duration< Rep, Period > &out) noexcept
 Parse this field as a timestamp duration since the Unix epoch.
 
template<typename Duration >
bool try_parse_timestamp (std::chrono::time_point< std::chrono::system_clock, Duration > &out) noexcept
 Parse this field as a std::chrono::system_clock time point.
 
template<typename T >
bool operator== (T other) const noexcept
 Compares the contents of this field to a numeric value.
 
CONSTEXPR csv::string_view get_sv () const noexcept
 Return a string view over the field's contents.
 
bool is_null () noexcept
 Returns true if field is an empty string or string of whitespace characters.
 
bool is_str () noexcept
 Returns true if field is a non-numeric, non-empty string.
 
bool is_num () noexcept
 Returns true if field is an integer or float.
 
bool is_int () noexcept
 Returns true if field is an integer.
 
bool is_float () noexcept
 Returns true if field is a floating point value.
 
bool is_bool () noexcept
 Returns true if field is a boolean value.
 
bool is_timestamp () noexcept
 Returns true if field is a timestamp value.
 
DataType type () noexcept
 Return the type of the underlying CSV data.
 
template<>
long double get ()
 Retrieve this field's value as a long double.
 
template<>
bool try_get (long double &out) noexcept
 Non-throwing retrieval of field as long double.
 
template<>
CONSTEXPR bool operator== (const char *other) const noexcept
 Compares the contents of this field to a string.
 
template<>
CONSTEXPR bool operator== (csv::string_view other) const noexcept
 Compares the contents of this field to a string.
 

Detailed Description

Definition at line 420 of file data_frame.hpp.

Constructor & Destructor Documentation

◆ DataFrameCell() [1/5]

csv::DataFrameCell::DataFrameCell ( )
inline

Definition at line 432 of file data_frame.hpp.

◆ DataFrameCell() [2/5]

csv::DataFrameCell::DataFrameCell ( const DataFrameCell other)
inline

Definition at line 434 of file data_frame.hpp.

◆ DataFrameCell() [3/5]

csv::DataFrameCell::DataFrameCell ( DataFrameCell &&  other)
inlinenoexcept

Definition at line 444 of file data_frame.hpp.

◆ DataFrameCell() [4/5]

csv::DataFrameCell::DataFrameCell ( const CSVRow _row,
RowOverlay _row_overlay,
size_t  _col_index 
)
inline

Definition at line 454 of file data_frame.hpp.

◆ DataFrameCell() [5/5]

csv::DataFrameCell::DataFrameCell ( const CSVRow _row,
const RowOverlay _row_overlay,
size_t  _col_index 
)
inline

Definition at line 466 of file data_frame.hpp.

Member Function Documentation

◆ get() [1/3]

template<>
long double csv::CSVField::get ( )
inline

Retrieve this field's value as a long double.

Definition at line 773 of file csv_row.hpp.

◆ get() [2/3]

template<typename T = std::string>
T csv::CSVField::get ( )
inline

Returns the value casted to the requested type, performing type checking before.

Valid options for T
  • std::string or csv::string_view
  • signed integral types (signed char, short, int, long int, long long int)
  • unsigned integral types (unsigned char, unsigned short, unsigned int, unsigned long long)
  • floating point types (float, double, long double)
Invalid conversions
  • Converting non-numeric values to any numeric type
  • Converting floating point values to integers
  • Converting a large integer to a smaller type that will not hold it
Note
This method is capable of parsing scientific E-notation. See Scalar Conversion Reference for more details.
Exceptions
std::runtime_errorThrown if an invalid conversion is performed.
Warning
Currently, conversions to floating point types are not checked for loss of precision
Any string_views returned are only guaranteed to be valid if the parent CSVRow is still alive. If you are concerned about object lifetimes, then grab a std::string or a numeric value.

Definition at line 180 of file csv_row.hpp.

◆ get() [3/3]

template<typename T = std::string>
T csv::DataFrameCell::get ( ) const
inline

Const-friendly read access for proxy use in column iteration and callbacks.

Definition at line 510 of file data_frame.hpp.

◆ get_sv()

CONSTEXPR csv::string_view csv::CSVField::get_sv ( ) const
inlinenoexcept

Return a string view over the field's contents.

Definition at line 344 of file csv_row.hpp.

◆ is_float() [1/2]

bool csv::DataFrameCell::is_float ( ) const
inlinenoexcept

Definition at line 530 of file data_frame.hpp.

◆ is_float() [2/2]

bool csv::CSVField::is_float ( )
inlinenoexcept

Returns true if field is a floating point value.

Definition at line 363 of file csv_row.hpp.

◆ is_int() [1/2]

bool csv::DataFrameCell::is_int ( ) const
inlinenoexcept

Definition at line 526 of file data_frame.hpp.

◆ is_int() [2/2]

bool csv::CSVField::is_int ( )
inlinenoexcept

Returns true if field is an integer.

Definition at line 358 of file csv_row.hpp.

◆ is_null() [1/2]

bool csv::DataFrameCell::is_null ( ) const
inlinenoexcept

Definition at line 514 of file data_frame.hpp.

◆ is_null() [2/2]

bool csv::CSVField::is_null ( )
inlinenoexcept

Returns true if field is an empty string or string of whitespace characters.

Definition at line 347 of file csv_row.hpp.

◆ is_num() [1/2]

bool csv::DataFrameCell::is_num ( ) const
inlinenoexcept

Definition at line 522 of file data_frame.hpp.

◆ is_num() [2/2]

bool csv::CSVField::is_num ( )
inlinenoexcept

Returns true if field is an integer or float.

Definition at line 353 of file csv_row.hpp.

◆ is_str() [1/2]

bool csv::DataFrameCell::is_str ( ) const
inlinenoexcept

Definition at line 518 of file data_frame.hpp.

◆ is_str() [2/2]

bool csv::CSVField::is_str ( )
inlinenoexcept

Returns true if field is a non-numeric, non-empty string.

Definition at line 350 of file csv_row.hpp.

◆ operator=() [1/3]

DataFrameCell & csv::DataFrameCell::operator= ( const DataFrameCell other)
inline

Definition at line 478 of file data_frame.hpp.

◆ operator=() [2/3]

DataFrameCell & csv::DataFrameCell::operator= ( csv::string_view  value)
inline

Definition at line 504 of file data_frame.hpp.

◆ operator=() [3/3]

DataFrameCell & csv::DataFrameCell::operator= ( DataFrameCell &&  other)
inlinenoexcept

Definition at line 491 of file data_frame.hpp.

◆ try_get() [1/3]

template<>
bool csv::CSVField::try_get ( long double &  out)
inlinenoexcept

Non-throwing retrieval of field as long double.

Definition at line 796 of file csv_row.hpp.

◆ try_get() [2/3]

template<typename T >
bool csv::DataFrameCell::try_get ( T &  out) const
inlinenoexcept

Definition at line 539 of file data_frame.hpp.

◆ try_get() [3/3]

template<typename T = std::string>
bool csv::CSVField::try_get ( T &  out)
inlinenoexcept

Non-throwing equivalent of get().

Applies the same type checks and conversions; returns true and writes to out on success, or returns false without throwing.

See also
get() for the full description of valid types, conversion rules, and warnings.

Example:

int value;
if (field.try_get(value)) {
// Use value safely
} else {
// Handle conversion failure
}

Definition at line 225 of file csv_row.hpp.

◆ type() [1/2]

DataType csv::DataFrameCell::type ( ) const
inlinenoexcept

Definition at line 534 of file data_frame.hpp.

◆ type() [2/2]

DataType csv::CSVField::type ( )
inlinenoexcept

Return the type of the underlying CSV data.

Definition at line 372 of file csv_row.hpp.


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