streamConsumer.hh 632 B

1234567891011121314151617181920212223242526272829
  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. static StreamConsumer *read(std::istream &stream);
  10. JSonElement * const getRoot() const;
  11. private:
  12. StreamConsumer(std::istream &stream);
  13. /**
  14. * @return true on success
  15. **/
  16. JSonElement *consumeToken(std::string &buf);
  17. JSonElement *readNext();
  18. JSonObject *readObject();
  19. JSonArray *readArray();
  20. bool ignoreChar(char c) const noexcept;
  21. std::istream &stream;
  22. JSonElement *root;
  23. };