1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Experimental drafts of Json serializer

This commit is contained in:
AlexVinS
2016-02-13 10:47:40 +03:00
parent a307d3ca40
commit 22b93106c8
11 changed files with 339 additions and 87 deletions

View File

@@ -0,0 +1,58 @@
/*
* JsonSerializeFormat.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
class JsonNode;
class JsonSerializeFormat;
class JsonStructSerializer: public boost::noncopyable
{
public:
JsonStructSerializer(JsonStructSerializer && other);
virtual ~JsonStructSerializer();
JsonStructSerializer enterStruct(const std::string & fieldName);
JsonNode & get();
JsonSerializeFormat * operator->();
private:
JsonStructSerializer(JsonSerializeFormat & owner_, const std::string & fieldName);
JsonStructSerializer(JsonStructSerializer & parent, const std::string & fieldName);
bool restoreState;
JsonSerializeFormat & owner;
JsonNode * parentNode;
JsonNode * thisNode;
friend class JsonSerializeFormat;
};
class JsonSerializeFormat
{
public:
JsonSerializeFormat(JsonNode & root_);
virtual ~JsonSerializeFormat() = default;
JsonNode & getRoot()
{
return *root;
};
JsonStructSerializer enterStruct(const std::string & fieldName);
protected:
JsonNode * root;
JsonNode * current;
private:
friend class JsonStructSerializer;
};