From a31858d29048735b812d385f75db4ed6a6a94556 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 30 Apr 2021 01:03:42 +0100 Subject: Fix the fact I've been spelling persistence wrong this whole time --- lib/jsonParse-persistence.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/jsonParse-persistence.cpp (limited to 'lib/jsonParse-persistence.cpp') diff --git a/lib/jsonParse-persistence.cpp b/lib/jsonParse-persistence.cpp new file mode 100644 index 0000000..5b3314e --- /dev/null +++ b/lib/jsonParse-persistence.cpp @@ -0,0 +1,84 @@ +#include "jsonParse-persistence.h" + +namespace Persistence { + void + JsonParsePersistence::loadState(std::istream & in) + { + this->switch_streams(&in, nullptr); + yy_push_state(0); + yylex(); + } + + void + JsonParsePersistence::beginObject() + { + current()->beforeValue(stk); + current()->beginObject(stk); + } + + void + JsonParsePersistence::beginArray() + { + current()->beforeValue(stk); + current()->beginArray(stk); + } + + void + JsonParsePersistence::pushBoolean(bool value) + { + pushValue(value); + } + + void + JsonParsePersistence::pushNumber(float value) + { + pushValue(value); + } + + void + JsonParsePersistence::pushNull() + { + pushValue(nullptr); + } + + void + JsonParsePersistence::pushText(std::string && value) + { + pushValue(value); + } + + void + JsonParsePersistence::pushKey(std::string && k) + { + stk.push(current()->select(k)); + } + + void + JsonParsePersistence::endArray() + { + stk.pop(); + stk.pop(); + } + + void + JsonParsePersistence::endObject() + { + current()->endObject(stk); + current()->endObject(stk); + } + + template + inline void + JsonParsePersistence::pushValue(T && value) + { + current()->beforeValue(stk); + current()->setValue(value); + stk.pop(); + } + + inline SelectionPtr & + JsonParsePersistence::current() + { + return stk.top(); + } +} -- cgit v1.2.3