18#ifndef VALUE_PARSER_HPP_
19#define VALUE_PARSER_HPP_
33 ValueParser(std::string_view input, std::size_t start_pos = 0)
44 std::size_t start =
pos_;
54 if (std::isdigit(
static_cast<unsigned char>(c))) {
56 }
else if (c ==
'.' && !has_dot) {
59 }
else if ((c ==
'e' || c ==
'E') && !has_exp) {
70 const std::string token(
input_.data() + start,
pos_ - start);
71 if constexpr (std::is_same_v<T, float>) {
72 value = std::stof(token);
74 value = std::stod(token);
88 std::size_t start =
pos_;
99 const std::string token(
input_.data() + start,
pos_ - start);
100 value = std::stol(token);
117 value =
static_cast<short>(tmp);
162 std::size_t start =
pos_;
165 if (std::isalnum(
static_cast<unsigned char>(c)) ||
166 c ==
'@' || c ==
'#' || c ==
':' || c ==
'+' ||
167 c ==
'-' || c ==
'%' || c ==
'.' || c ==
'_' ||
168 c ==
'$' || c ==
'&' || c ==
'/') {
175 value.assign(
input_.data() + start,
pos_ - start);
187 std::size_t start =
pos_;
198 value.assign(
input_.data() + start,
end - start);
PartBunchBase< T, Dim >::ConstIterator end(PartBunchBase< T, Dim > const &bunch)
void skipWhitespaceAndComments(std::string_view input, std::size_t &pos)
bool parseQuotedString(std::string &value)
bool parseLong(long &value)
bool parseString(std::string &value)
ValueParser(std::string_view input, std::size_t start_pos=0)
bool parseChar(char &value)
bool parseFloat(float &value)
std::size_t getPosition() const
bool parseStringToEol(std::string &value)
bool parseInteger(long &value)
bool parseNumeric(T &value)
void setPosition(std::size_t pos)
bool parseDouble(double &value)
bool parseShort(short &value)