streamConsumer.hh 821 B

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