mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Prepared JsonNode for new logging API.
This commit is contained in:
		| @@ -81,7 +81,7 @@ void SettingsStorage::invalidateNode(const std::vector<std::string> &changedPath | |||||||
| 	JsonUtils::minimize(savedConf, "vcmi:settings"); | 	JsonUtils::minimize(savedConf, "vcmi:settings"); | ||||||
|  |  | ||||||
| 	FileStream file(*CResourceHandler::get()->getResourceName(ResourceID("config/settings.json")), std::ofstream::out | std::ofstream::trunc); | 	FileStream file(*CResourceHandler::get()->getResourceName(ResourceID("config/settings.json")), std::ofstream::out | std::ofstream::trunc); | ||||||
| 	file << savedConf; | 	file << savedConf.toJson(); | ||||||
| } | } | ||||||
|  |  | ||||||
| JsonNode & SettingsStorage::getNode(std::vector<std::string> path) | JsonNode & SettingsStorage::getNode(std::vector<std::string> path) | ||||||
|   | |||||||
| @@ -976,7 +976,7 @@ void CModHandler::afterLoad() | |||||||
| 	modSettings["core"] = coreMod.saveLocalData(); | 	modSettings["core"] = coreMod.saveLocalData(); | ||||||
|  |  | ||||||
| 	FileStream file(*CResourceHandler::get()->getResourceName(ResourceID("config/modSettings.json")), std::ofstream::out | std::ofstream::trunc); | 	FileStream file(*CResourceHandler::get()->getResourceName(ResourceID("config/modSettings.json")), std::ofstream::out | std::ofstream::trunc); | ||||||
| 	file << modSettings; | 	file << modSettings.toJson(); | ||||||
| } | } | ||||||
|  |  | ||||||
| std::string CModHandler::normalizeIdentifier(const std::string & scope, const std::string & remoteScope, const std::string & identifier) | std::string CModHandler::normalizeIdentifier(const std::string & scope, const std::string & remoteScope, const std::string & identifier) | ||||||
|   | |||||||
| @@ -815,8 +815,9 @@ void CTownHandler::initializeRequirements() | |||||||
| 		{ | 		{ | ||||||
| 			if (node.Vector().size() > 1) | 			if (node.Vector().size() > 1) | ||||||
| 			{ | 			{ | ||||||
| 				logGlobal->warnStream() << "Unexpected length of town buildings requirements: " << node.Vector().size(); | 				logGlobal->warn("Unexpected length of town buildings requirements: %d", node.Vector().size()); | ||||||
| 				logGlobal->warnStream() << "Entry contains " << node; | 				logGlobal->warn("Entry contains: "); | ||||||
|  | 				logGlobal->warn(node.toJson()); | ||||||
| 			} | 			} | ||||||
| 			return BuildingID(VLC->modh->identifiers.getIdentifier(requirement.town->getBuildingScope(), node.Vector()[0]).get()); | 			return BuildingID(VLC->modh->identifiers.getIdentifier(requirement.town->getBuildingScope(), node.Vector()[0]).get()); | ||||||
| 		}); | 		}); | ||||||
|   | |||||||
| @@ -125,10 +125,9 @@ void JsonWriter::writeNode(const JsonNode &node) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| JsonWriter::JsonWriter(std::ostream &output, const JsonNode &node): | JsonWriter::JsonWriter(std::ostream & output) | ||||||
| 	out(output) | 	: out(output) | ||||||
| { | { | ||||||
| 	writeNode(node); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| //////////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////////// | ||||||
|   | |||||||
| @@ -15,15 +15,15 @@ class JsonWriter | |||||||
| { | { | ||||||
| 	//prefix for each line (tabulation) | 	//prefix for each line (tabulation) | ||||||
| 	std::string prefix; | 	std::string prefix; | ||||||
| 	std::ostream &out; | 	std::ostream & out; | ||||||
| public: | public: | ||||||
| 	template<typename Iterator> | 	template<typename Iterator> | ||||||
| 	void writeContainer(Iterator begin, Iterator end); | 	void writeContainer(Iterator begin, Iterator end); | ||||||
| 	void writeEntry(JsonMap::const_iterator entry); | 	void writeEntry(JsonMap::const_iterator entry); | ||||||
| 	void writeEntry(JsonVector::const_iterator entry); | 	void writeEntry(JsonVector::const_iterator entry); | ||||||
| 	void writeString(const std::string &string); | 	void writeString(const std::string & string); | ||||||
| 	void writeNode(const JsonNode &node); | 	void writeNode(const JsonNode & node); | ||||||
| 	JsonWriter(std::ostream &output, const JsonNode &node); | 	JsonWriter(std::ostream & output); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //Tiny string class that uses const char* as data for speed, members are private | //Tiny string class that uses const char* as data for speed, members are private | ||||||
|   | |||||||
| @@ -27,13 +27,6 @@ class CModHandler; | |||||||
|  |  | ||||||
| static const JsonNode nullNode; | static const JsonNode nullNode; | ||||||
|  |  | ||||||
|  |  | ||||||
| std::ostream & operator<<(std::ostream &out, const JsonNode &node) |  | ||||||
| { |  | ||||||
| 	JsonWriter writer(out, node); |  | ||||||
| 	return out << "\n"; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| JsonNode::JsonNode(JsonType Type): | JsonNode::JsonNode(JsonType Type): | ||||||
| 	type(DATA_NULL) | 	type(DATA_NULL) | ||||||
| { | { | ||||||
| @@ -374,6 +367,15 @@ JsonNode & JsonNode::resolvePointer(const std::string &jsonPointer) | |||||||
| 	return ::resolvePointer(*this, jsonPointer); | 	return ::resolvePointer(*this, jsonPointer); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | std::string JsonNode::toJson() const | ||||||
|  | { | ||||||
|  | 	std::ostringstream out; | ||||||
|  | 	JsonWriter writer(out); | ||||||
|  | 	writer.writeNode(*this); | ||||||
|  | 	out << "\n"; | ||||||
|  | 	return out.str(); | ||||||
|  | } | ||||||
|  |  | ||||||
| ///JsonUtils | ///JsonUtils | ||||||
|  |  | ||||||
| void JsonUtils::parseTypedBonusShort(const JsonVector& source, std::shared_ptr<Bonus> dest) | void JsonUtils::parseTypedBonusShort(const JsonVector& source, std::shared_ptr<Bonus> dest) | ||||||
|   | |||||||
| @@ -13,8 +13,6 @@ class JsonNode; | |||||||
| typedef std::map <std::string, JsonNode> JsonMap; | typedef std::map <std::string, JsonNode> JsonMap; | ||||||
| typedef std::vector <JsonNode> JsonVector; | typedef std::vector <JsonNode> JsonVector; | ||||||
|  |  | ||||||
| DLL_LINKAGE std::ostream & operator<<(std::ostream &out, const JsonNode &node); |  | ||||||
|  |  | ||||||
| struct Bonus; | struct Bonus; | ||||||
| class ResourceID; | class ResourceID; | ||||||
|  |  | ||||||
| @@ -112,6 +110,8 @@ public: | |||||||
| 	JsonNode & operator[](std::string child); | 	JsonNode & operator[](std::string child); | ||||||
| 	const JsonNode & operator[](std::string child) const; | 	const JsonNode & operator[](std::string child) const; | ||||||
|  |  | ||||||
|  | 	std::string toJson() const; | ||||||
|  |  | ||||||
| 	template <typename Handler> void serialize(Handler &h, const int version) | 	template <typename Handler> void serialize(Handler &h, const int version) | ||||||
| 	{ | 	{ | ||||||
| 		h & meta; | 		h & meta; | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ | |||||||
|  |  | ||||||
| #include "../filesystem/CInputStream.h" | #include "../filesystem/CInputStream.h" | ||||||
| #include "../filesystem/COutputStream.h" | #include "../filesystem/COutputStream.h" | ||||||
|  | #include "../JsonDetail.h" | ||||||
| #include "CMap.h" | #include "CMap.h" | ||||||
| #include "../CModHandler.h" | #include "../CModHandler.h" | ||||||
| #include "../CCreatureHandler.h" | #include "../CCreatureHandler.h" | ||||||
| @@ -1054,15 +1055,13 @@ CMapLoaderJson::MapObjectLoader::MapObjectLoader(CMapLoaderJson * _owner, JsonMa | |||||||
|  |  | ||||||
| void CMapLoaderJson::MapObjectLoader::construct() | void CMapLoaderJson::MapObjectLoader::construct() | ||||||
| { | { | ||||||
| 	//logGlobal->debugStream() <<"Loading: " <<jsonKey; |  | ||||||
|  |  | ||||||
| 	//TODO:consider move to ObjectTypeHandler | 	//TODO:consider move to ObjectTypeHandler | ||||||
| 	//find type handler | 	//find type handler | ||||||
| 	std::string typeName = configuration["type"].String(), subtypeName = configuration["subtype"].String(); | 	std::string typeName = configuration["type"].String(), subtypeName = configuration["subtype"].String(); | ||||||
| 	if(typeName.empty()) | 	if(typeName.empty()) | ||||||
| 	{ | 	{ | ||||||
| 		logGlobal->error("Object type missing"); | 		logGlobal->error("Object type missing"); | ||||||
| 		logGlobal->debugStream() << configuration; | 		logGlobal->debug(configuration.toJson()); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1082,7 +1081,7 @@ void CMapLoaderJson::MapObjectLoader::construct() | |||||||
| 	else if(subtypeName.empty()) | 	else if(subtypeName.empty()) | ||||||
| 	{ | 	{ | ||||||
| 		logGlobal->error("Object subtype missing"); | 		logGlobal->error("Object subtype missing"); | ||||||
| 		logGlobal->debugStream() << configuration; | 		logGlobal->debug(configuration.toJson()); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1189,7 +1188,8 @@ CMapSaverJson::~CMapSaverJson() | |||||||
| void CMapSaverJson::addToArchive(const JsonNode & data, const std::string & filename) | void CMapSaverJson::addToArchive(const JsonNode & data, const std::string & filename) | ||||||
| { | { | ||||||
| 	std::ostringstream out; | 	std::ostringstream out; | ||||||
| 	out << data; | 	JsonWriter writer(out); | ||||||
|  | 	writer.writeNode(data); | ||||||
| 	out.flush(); | 	out.flush(); | ||||||
|  |  | ||||||
| 	{ | 	{ | ||||||
|   | |||||||
| @@ -3701,7 +3701,7 @@ bool CGameHandler::queryReply(QueryID qid, const JsonNode & answer, PlayerColor | |||||||
| 	boost::unique_lock<boost::recursive_mutex> lock(gsm); | 	boost::unique_lock<boost::recursive_mutex> lock(gsm); | ||||||
|  |  | ||||||
| 	logGlobal->trace("Player %s attempts answering query %d with answer:", player, qid); | 	logGlobal->trace("Player %s attempts answering query %d with answer:", player, qid); | ||||||
| 	logGlobal->traceStream() << answer; | 	logGlobal->trace(answer.toJson()); | ||||||
|  |  | ||||||
| 	auto topQuery = queries.topQuery(player); | 	auto topQuery = queries.topQuery(player); | ||||||
| 	COMPLAIN_RET_FALSE_IF(!topQuery, "This player doesn't have any queries!"); | 	COMPLAIN_RET_FALSE_IF(!topQuery, "This player doesn't have any queries!"); | ||||||
|   | |||||||
| @@ -9,6 +9,8 @@ | |||||||
|  */ |  */ | ||||||
| #include "StdInc.h" | #include "StdInc.h" | ||||||
|  |  | ||||||
|  | #include "../lib/JsonDetail.h" | ||||||
|  |  | ||||||
| #include "../lib/filesystem/CMemoryBuffer.h" | #include "../lib/filesystem/CMemoryBuffer.h" | ||||||
| #include "../lib/filesystem/Filesystem.h" | #include "../lib/filesystem/Filesystem.h" | ||||||
|  |  | ||||||
| @@ -92,17 +94,11 @@ static JsonNode getFromArchive(CZipLoader & archive, const std::string & archive | |||||||
|  |  | ||||||
| static void addToArchive(CZipSaver & saver, const JsonNode & data, const std::string & filename) | static void addToArchive(CZipSaver & saver, const JsonNode & data, const std::string & filename) | ||||||
| { | { | ||||||
| 	std::ostringstream out; | 	auto s = data.toJson(); | ||||||
| 	out << data; | 	std::unique_ptr<COutputStream> stream = saver.addFile(filename); | ||||||
| 	out.flush(); |  | ||||||
|  |  | ||||||
| 	{ | 	if(stream->write((const ui8*)s.c_str(), s.size()) != s.size()) | ||||||
| 		auto s = out.str(); | 		throw new std::runtime_error("CMapSaverJson::saveHeader() zip compression failed."); | ||||||
| 		std::unique_ptr<COutputStream> stream = saver.addFile(filename); |  | ||||||
|  |  | ||||||
| 		if(stream->write((const ui8*)s.c_str(), s.size()) != s.size()) |  | ||||||
| 			throw new std::runtime_error("CMapSaverJson::saveHeader() zip compression failed."); |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
|  |  | ||||||
| static std::unique_ptr<CMap> loadOriginal(const JsonNode & header, const JsonNode & objects, const JsonNode & surface, const JsonNode & underground) | static std::unique_ptr<CMap> loadOriginal(const JsonNode & header, const JsonNode & objects, const JsonNode & surface, const JsonNode & underground) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user