streamConsumer.hh 754 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <istream>
  3. #include "jsonObject.hh"
  4. #include "jsonArray.hh"
  5. #include "jsonPrimitive.hh"
  6. class StreamConsumer
  7. {
  8. public:
  9. virtual ~StreamConsumer();
  10. static StreamConsumer *read(std::istream &stream);
  11. JSonElement * const getRoot() const;
  12. private:
  13. StreamConsumer(std::istream &stream);
  14. /**
  15. * @return true on success
  16. **/
  17. JSonElement *consumeToken(JSonContainer *parent, std::string &buf);
  18. JSonElement *readNext(JSonContainer *parent);
  19. JSonObject *readObject(JSonContainer *parent);
  20. JSonArray *readArray(JSonContainer *parent);
  21. bool ignoreChar(char c) const noexcept;
  22. std::istream &stream;
  23. JSonElement *root;
  24. };