This changes some constructs like this
struct FmtScope {
enum value { Local, Global };
};
struct GroupType {
enum value { NoType, Seq, Map };
};
struct FlowType {
enum value { NoType, Flow, Block };
};
into this
enum class FmtScope { Local, Global };
enum class GroupType { NoType, Seq, Map };
enum class FlowType { NoType, Flow, Block };
The full list of pseudo enum classes now turned into real enum classes:
enum class State { WaitingForSequenceEntry, WaitingForKey, WaitingForValue };
enum class EmitterNodeType { NoType, Property, Scalar, FlowSeq, BlockSeq, FlowMap, BlockMap };
enum class Type { Verbatim, PrimaryHandle, NamedHandle };
enum class EmitterStyle { Default, Block, Flow };
enum class iterator_type { NoneType, Sequence, Map };
enum class NodeType { Undefined, Null, Scalar, Sequence, Map };
enum class CollectionType { NoCollection, BlockMap, BlockSeq, FlowMap, FlowSeq, CompactMap };
enum class FmtScope { Local, Global };
enum class GroupType { NoType, Seq, Map };
enum class FlowType { NoType, Flow, Block };
enum class StringFormat { Plain, SingleQuoted, DoubleQuoted, Literal };
enum class StringEscaping { None, NonAscii, JSON };
Signed-off-by: Ted Lyngmo <ted@lyncon.se>
62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
#include <fstream>
|
|
#include <iostream>
|
|
#include <vector>
|
|
|
|
#include "yaml-cpp/eventhandler.h"
|
|
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
|
|
|
|
struct Params {
|
|
bool hasFile;
|
|
std::string fileName;
|
|
};
|
|
|
|
Params ParseArgs(int argc, char** argv) {
|
|
Params p;
|
|
|
|
std::vector<std::string> args(argv + 1, argv + argc);
|
|
|
|
return p;
|
|
}
|
|
|
|
class NullEventHandler : public YAML::EventHandler {
|
|
public:
|
|
void OnDocumentStart(const YAML::Mark&) override {}
|
|
void OnDocumentEnd() override {}
|
|
|
|
void OnNull(const YAML::Mark&, YAML::anchor_t) override {}
|
|
void OnAlias(const YAML::Mark&, YAML::anchor_t) override {}
|
|
void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t,
|
|
const std::string&) override {}
|
|
|
|
void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t,
|
|
YAML::EmitterStyle) override {}
|
|
void OnSequenceEnd() override {}
|
|
|
|
void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t,
|
|
YAML::EmitterStyle) override {}
|
|
void OnMapEnd() override {}
|
|
};
|
|
|
|
void parse(std::istream& input) {
|
|
try {
|
|
YAML::Node doc = YAML::Load(input);
|
|
std::cout << doc << "\n";
|
|
} catch (const YAML::Exception& e) {
|
|
std::cerr << e.what() << "\n";
|
|
}
|
|
}
|
|
|
|
int main(int argc, char** argv) {
|
|
Params p = ParseArgs(argc, argv);
|
|
|
|
if (argc > 1) {
|
|
std::ifstream fin;
|
|
fin.open(argv[1]);
|
|
parse(fin);
|
|
} else {
|
|
parse(std::cin);
|
|
}
|
|
|
|
return 0;
|
|
}
|