From 3cd4ff83a253e098e6524df5be3a686727e4f50b Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 28 Mar 2021 17:17:11 +0100 Subject: Initial commit of basis persistence JSON parser lifted almost verbatim for libjsonpp running into some custom code for populating ilt objects. Pretty minimal per object code requirements. --- lib/jsonParse.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/jsonParse.h (limited to 'lib/jsonParse.h') diff --git a/lib/jsonParse.h b/lib/jsonParse.h new file mode 100644 index 0000000..6b1249f --- /dev/null +++ b/lib/jsonParse.h @@ -0,0 +1,43 @@ +#ifndef JSONFLEXLEXER_H +#define JSONFLEXLEXER_H + +#ifndef FLEX_SCANNER +# define yyFlexLexer jsonBaseFlexLexer +# include +#endif +#include +#include +#include +#include +#include +#include + +namespace json { + class jsonParser : public yyFlexLexer { + public: + using yyFlexLexer::yyFlexLexer; + int yylex() override; + + static void appendEscape(const char *, std::string &); + static void appendEscape(unsigned long, std::string &); + + protected: + virtual void BeginObject() = 0; + virtual void BeginArray() = 0; + + virtual void PushBoolean(bool) = 0; + virtual void PushNumber(float) = 0; + virtual void PushNull() = 0; + virtual void PushText(std::string &&) = 0; + virtual void PushKey(std::string &&) = 0; + + virtual void EndArray() = 0; + virtual void EndObject() = 0; + + void LexerError(const char * msg) override; + + std::string buf; + }; +} + +#endif -- cgit v1.2.3