123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "yaml-cpp/node/parse.h"
- #include <fstream>
- #include <sstream>
- #include "yaml-cpp/node/node.h"
- #include "yaml-cpp/node/impl.h"
- #include "yaml-cpp/parser.h"
- #include "nodebuilder.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.c_str());
- if (fin.bad()) {
- throw BadFile();
- }
- 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 (1) {
- NodeBuilder builder;
- if (!parser.HandleNextDocument(builder)) {
- break;
- }
- docs.push_back(builder.Root());
- }
- return docs;
- }
- std::vector<Node> LoadAllFromFile(const std::string& filename) {
- std::ifstream fin(filename.c_str());
- if (!fin) {
- throw BadFile();
- }
- return LoadAll(fin);
- }
- } // namespace YAML
|