read.cpp 1.22 KB
Newer Older
1
#include <fstream>
2
3
#include <iostream>

4
#include "yaml-cpp/emitterstyle.h"
Jesse Beder's avatar
Jesse Beder committed
5
#include "yaml-cpp/eventhandler.h"
Jesse Beder's avatar
Jesse Beder committed
6
7
#include "yaml-cpp/yaml.h"  // IWYU pragma: keep

Jesse Beder's avatar
Jesse Beder committed
8
9
10
11
12
13
14
15
16
17
18
19
20
class NullEventHandler : public YAML::EventHandler {
 public:
  typedef YAML::Mark Mark;
  typedef YAML::anchor_t anchor_t;

  NullEventHandler() {}

  virtual void OnDocumentStart(const Mark&) {}
  virtual void OnDocumentEnd() {}
  virtual void OnNull(const Mark&, anchor_t) {}
  virtual void OnAlias(const Mark&, anchor_t) {}
  virtual void OnScalar(const Mark&, const std::string&, anchor_t,
                        const std::string&) {}
21
22
  virtual void OnSequenceStart(const Mark&, const std::string&, anchor_t,
                               YAML::EmitterStyle::value style) {}
Jesse Beder's avatar
Jesse Beder committed
23
  virtual void OnSequenceEnd() {}
24
25
  virtual void OnMapStart(const Mark&, const std::string&, anchor_t,
                          YAML::EmitterStyle::value style) {}
Jesse Beder's avatar
Jesse Beder committed
26
  virtual void OnMapEnd() {}
27
28
};

29
void run(YAML::Parser& parser) {
Jesse Beder's avatar
Jesse Beder committed
30
31
  NullEventHandler handler;
  parser.HandleNextDocument(handler);
32
33
34
35
36
37
38
39
40
41
42
}

int main(int argc, char** argv) {
  if (argc > 1) {
    std::ifstream in(argv[1]);
    YAML::Parser parser(in);
    run(parser);
  } else {
    YAML::Parser parser(std::cin);
    run(parser);
  }
Jesse Beder's avatar
Jesse Beder committed
43
  return 0;
44
}