#ifndef JSONPARSE_PERSISTANCE #define JSONPARSE_PERSISTANCE #include "jsonParse.h" // IWYU pragma: export #include "persistance.h" // IWYU pragma: export #include #include #include #include namespace Persistanace { class JsonParsePersistance : public json::jsonParser { public: template inline T loadState(std::istream & in) { T t {}; stk.push(std::make_unique>(std::ref(t))); loadState(in); return t; } protected: void loadState(std::istream & in); void beginObject() override; void beginArray() override; void pushBoolean(bool value) override; void pushNumber(float value) override; void pushNull() override; void pushText(std::string && value) override; void pushKey(std::string && k) override; void endArray() override; void endObject() override; Stack stk; template inline void pushValue(T && value); inline SelectionPtr & current(); }; } #endif