| #include "yaml-cpp/node/parse.h" | |
| #include <fstream> | |
| #include <sstream> | |
| #include "nodebuilder.h" | |
| #include "yaml-cpp/node/impl.h" | |
| #include "yaml-cpp/node/node.h" | |
| #include "yaml-cpp/parser.h" | |
| namespace YAML { | |
| Node Load(const std::string& input) { | |
| std::stringstream stream(input); | |
| return Load(stream); | |
| } | |
| Node Load(const char* input) { | |
| std::stringstream stream(input); | |
| return Load(stream); | |
| } | |
| Node Load(std::istream& input) { | |
| Parser parser(input); | |
| NodeBuilder builder; | |
| if (!parser.HandleNextDocument(builder)) { | |
| return Node(); | |
| } | |
| return builder.Root(); | |
| } | |
| Node LoadFile(const std::string& filename) { | |
| std::ifstream fin(filename); | |
| if (!fin) { | |
| throw BadFile(filename); | |
| } | |
| return Load(fin); | |
| } | |
| std::vector<Node> LoadAll(const std::string& input) { | |
| std::stringstream stream(input); | |
| return LoadAll(stream); | |
| } | |
| std::vector<Node> LoadAll(const char* input) { | |
| std::stringstream stream(input); | |
| return LoadAll(stream); | |
| } | |
| std::vector<Node> LoadAll(std::istream& input) { | |
| std::vector<Node> docs; | |
| Parser parser(input); | |
| while (true) { | |
| NodeBuilder builder; | |
| if (!parser.HandleNextDocument(builder) || builder.Root().IsNull()) { | |
| break; | |
| } | |
| docs.push_back(builder.Root()); | |
| } | |
| return docs; | |
| } | |
| std::vector<Node> LoadAllFromFile(const std::string& filename) { | |
| std::ifstream fin(filename); | |
| if (!fin) { | |
| throw BadFile(filename); | |
| } | |
| return LoadAll(fin); | |
| } | |
| } // namespace YAML |