3 #include "../FileSystem/file_system.hpp" 4 #include "../engine.hpp" 5 #include "rapidjson/prettywriter.h" 12 FileSystems::FileSystem& fs = Engine::GetFileSystem();
13 FileSystems::File& jsonFile = fs.LoadFile(filePath);
15 std::vector<u8> data(static_cast<size_t>(jsonFile.Size()) + 1);
16 jsonFile.ReadData(data, jsonFile.Size());
18 rapidjson::StringStream stream(reinterpret_cast<char const *const>(data.data()));
19 rapidjson::Document document;
20 document.ParseStream(stream);
30 rapidjson::Document oldDocument =
OpenJSON(filePath);
34 oldDocument.RemoveAllMembers();
39 FileSystems::FileSystem& fs = Engine::GetFileSystem();
40 FileSystems::File& jsonFile = fs.LoadFile(filePath, FileSystems::File::OpenMode::write);
42 rapidjson::StringBuffer buffer;
43 rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buffer);
44 oldDocument.Accept(writer);
46 jsonFile.WriteString(buffer.GetString());
52 rapidjson::Document& documentToAdd,
bool overwriteValues)
54 rapidjson::Document::AllocatorType& allocator = originalDocument.GetAllocator();
56 if(!originalDocument.ObjectEmpty())
58 for(rapidjson::Value::MemberIterator it = originalDocument.MemberBegin(), end = originalDocument.MemberEnd(); it != end; ++it)
62 second.CopyFrom(it->value, allocator);
66 if(!documentToAdd[first].IsNull())
68 second.CopyFrom(documentToAdd[first], allocator);
72 documentToAdd.EraseMember(first);
74 originalDocument[first].Swap(second);
78 for(rapidjson::Document::MemberIterator it = documentToAdd.MemberBegin(), end = documentToAdd.MemberEnd(); it != end; ++it)
80 originalDocument.AddMember(it->name, it->value, allocator);
IMGUI_API void Value(const char *prefix, bool b)
static void MergeDocuments(rapidjson::Document &originalDocument, rapidjson::Document &documentToAdd, bool overwriteValues=true)
static rapidjson::Document OpenJSON(std::string const &filePath)
Enter a full path towards the json folder location, and it'll return you a document.
static rapidjson::Document WriteToJson(std::string const filePath, rapidjson::Document &document, bool destroyOldJson=false)