streamConsumer.hh 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <istream>
  3. #include "params.hh"
  4. #include "jsonObject.hh"
  5. #include "jsonArray.hh"
  6. #include "jsonPrimitive.hh"
  7. #include "linearHistory.hh"
  8. class StreamConsumer
  9. {
  10. public:
  11. StreamConsumer(std::istream &stream);
  12. virtual ~StreamConsumer();
  13. StreamConsumer *read();
  14. JSonElement * const getRoot() const;
  15. StreamConsumer *withConfig(const AParams *);
  16. private:
  17. /**
  18. * @return true on success
  19. **/
  20. JSonElement *consumeToken(JSonContainer *parent, std::string &buf);
  21. JSonElement *readNext(JSonContainer *parent);
  22. JSonObject *readObject(JSonContainer *parent);
  23. JSonArray *readArray(JSonContainer *parent);
  24. bool ignoreChar(char c) const noexcept;
  25. static void appendUnicode(const char [4], std::string &);
  26. std::istream &stream;
  27. JSonElement *root;
  28. const AParams *params;
  29. LinearHistory history;
  30. private:
  31. static float _stof(const std::string &);
  32. static float _stof(const char *);
  33. };