diff options
author | 2015-08-26 15:50:06 +0300 | |
---|---|---|
committer | 2015-08-26 15:50:06 +0300 | |
commit | 53f0e28d7f30c7175cbb15884c309613593859d8 (patch) | |
tree | e75ff499233519baa6c50c60fa0c726da7b42e03 /external_libs/yaml-cpp/util/parse.cpp | |
parent | a628a35b10fbd38211c353f506a8c49c2cc3dd7e (diff) | |
parent | 00d6f001971b324bb9c884aaf0384a4cee076550 (diff) |
Merge branch 'lib_fix'
Diffstat (limited to 'external_libs/yaml-cpp/util/parse.cpp')
-rw-r--r-- | external_libs/yaml-cpp/util/parse.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/external_libs/yaml-cpp/util/parse.cpp b/external_libs/yaml-cpp/util/parse.cpp new file mode 100644 index 00000000..d02a76a7 --- /dev/null +++ b/external_libs/yaml-cpp/util/parse.cpp @@ -0,0 +1,65 @@ +#include "yaml-cpp/yaml.h" +#include "yaml-cpp/eventhandler.h" +#include <fstream> +#include <iostream> +#include <vector> + +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: + virtual void OnDocumentStart(const YAML::Mark&) {} + virtual void OnDocumentEnd() {} + + virtual void OnNull(const YAML::Mark&, YAML::anchor_t) {} + virtual void OnAlias(const YAML::Mark&, YAML::anchor_t) {} + virtual void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t, const std::string&) {} + + virtual void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {} + virtual void OnSequenceEnd() {} + + virtual void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {} + virtual void OnMapEnd() {} +}; + +void parse(std::istream& input) +{ + try { + YAML::Parser parser(input); + YAML::Node doc; + while(parser.GetNextDocument(doc)) { + YAML::Emitter emitter; + emitter << doc; + std::cout << emitter.c_str() << "\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; +} |