54 std::shared_ptr<DBNode>
parse(
const std::string& input)
const override;
67 void writeToFile(
const std::string& filename,
const std::shared_ptr<DBNode>& root)
const override;
79 std::shared_ptr<DBNode>
readFromFile(
const std::string& filename)
const override;
101 std::shared_ptr<DBNode>
parseObject(
const std::string& input,
size_t& index)
const;
117 std::string
parseString(
const std::string& input,
size_t& index)
const;
158 double parseNumber(
const std::string& input,
size_t& index)
const;
169 void skipWhitespace(
const std::string& input,
size_t& index)
const;
186 std::shared_ptr<DBNode>
parseArray(
const std::string& input,
size_t& index)
const;
Hierarchical key–value tree with JSON/YAML serialization.
Abstract interface for (de)serializing data as DBNode trees.
std::variant< BlockName, int, double, bool, std::shared_ptr< DBNode >, std::vector< std::shared_ptr< DBNode > > > Value
Variant type used to store values in the tree.
Abstract base class for data parsers.
JSON implementation of the IParser interface.
void writeToFile(const std::string &filename, const std::shared_ptr< DBNode > &root) const override
Serializes a DBNode tree to a JSON file.
std::shared_ptr< DBNode > parseArray(const std::string &input, size_t &index) const
Parses a JSON array starting at the current position.
DBNode::Value parseValue(const std::string &input, size_t &index) const
Parses any JSON value at the current position.
std::shared_ptr< DBNode > parseObject(const std::string &input, size_t &index) const
Parses a JSON object starting at the given index.
std::shared_ptr< DBNode > readFromFile(const std::string &filename) const override
Reads a JSON file and parses it into a DBNode tree.
double parseNumber(const std::string &input, size_t &index) const
Parses a JSON number (integer or floating point).
std::shared_ptr< DBNode > parse(const std::string &input) const override
Parses a JSON document from an in-memory string.
std::string parseString(const std::string &input, size_t &index) const
Parses a JSON string literal.
void skipWhitespace(const std::string &input, size_t &index) const
Skips whitespace characters in the input string.