mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
#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 <fstream>
|
|
#include <sstream>
|
|
|
|
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<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);
|
|
}
|
|
}
|