#include "yaml-cpp/node/parse.h" #include "yaml-cpp/node/node.h" #include "yaml-cpp/node/impl.h" #include "yaml-cpp/parser.h" #include "nodebuilder.h" #include #include 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.c_str()); if(!fin) throw BadFile(); return Load(fin); } std::vector LoadAll(const std::string& input) { std::stringstream stream(input); return LoadAll(stream); } std::vector LoadAll(const char *input) { std::stringstream stream(input); return LoadAll(stream); } std::vector LoadAll(std::istream& input) { std::vector docs; Parser parser(input); while(1) { NodeBuilder builder; if(!parser.HandleNextDocument(builder)) break; docs.push_back(builder.Root()); } return docs; } std::vector LoadAllFromFile(const std::string& filename) { std::ifstream fin(filename.c_str()); if(!fin) throw BadFile(); return LoadAll(fin); } }