Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
YamlParser.h
Go to the documentation of this file.
1#ifndef YAMLPARSER_H
2#define YAMLPARSER_H
3
4#include <memory>
5#include <string>
6#include <cctype>
7#include <stdexcept>
8#include <algorithm>
9#include <stack>
10#include "DBNode.h"
11#include "IParser.h"
12#include "Logger.h"
13
39class YAMLParser : public IParser {
40public:
49 std::shared_ptr<DBNode> parse(const std::string& input) const override;
50
62 void writeToFile(const std::string& filename, const std::shared_ptr<DBNode>& root) const override;
63
74 std::shared_ptr<DBNode> readFromFile(const std::string& filename) const override;
75
76private:
88 bool parseLine(const std::string& line, std::string& key, std::string& value) const;
89
100 void adjustIndentation(size_t indent, std::vector<std::shared_ptr<DBNode>>& nodeStack, std::vector<int>& indentStack) const;
101
114 static std::shared_ptr<DBNode> parseYAMLDBNode(std::istringstream& stream, int indentLevel);
115
128 static void processKeyValue(const std::string& line, std::shared_ptr<DBNode>& node, std::istringstream& stream, int indentLevel);
129
145 static void processList(std::shared_ptr<DBNode>& node, std::istringstream& stream, int indentLevel, std::string firstLine = "");
146
154 static std::string trim(const std::string& str);
155
164 static int countLeadingSpaces(const std::string& str);
165
176 bool isListDBNode(const std::shared_ptr<DBNode>& node) const;
177
186 double parseNumber(const std::string& value) const;
187
200 static DBNode::Value parseScalar(const std::string& value);
201
211 DBNode::Value parseValue(const std::string& value) const;
212
222 static bool isDouble(const std::string& str);
223
233 static bool isInteger(const std::string& str);
234};
235
236#endif // YAMLPARSER_H
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.
Definition DBNode.h:45
Abstract base class for data parsers.
Definition IParser.h:30
YAML implementation of the IParser interface.
Definition YamlParser.h:39
std::shared_ptr< DBNode > readFromFile(const std::string &filename) const override
Reads and parses YAML data from a file.
std::shared_ptr< DBNode > parse(const std::string &input) const override
Parses a YAML string into a DBNode hierarchy.
void writeToFile(const std::string &filename, const std::shared_ptr< DBNode > &root) const override
Writes a DBNode hierarchy to a YAML file.