mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-08 23:36:33 +02:00
Unify formatting
This commit is contained in:
parent
2632ab04f5
commit
18bbccd167
@ -11,9 +11,9 @@
|
|||||||
#include "StdInc.h"
|
#include "StdInc.h"
|
||||||
#include "JsonNode.h"
|
#include "JsonNode.h"
|
||||||
|
|
||||||
#include "filesystem/Filesystem.h"
|
|
||||||
#include "JsonParser.h"
|
#include "JsonParser.h"
|
||||||
#include "JsonWriter.h"
|
#include "JsonWriter.h"
|
||||||
|
#include "filesystem/Filesystem.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -56,31 +56,38 @@ static const JsonNode nullNode;
|
|||||||
|
|
||||||
JsonNode::JsonNode(bool boolean)
|
JsonNode::JsonNode(bool boolean)
|
||||||
: data(boolean)
|
: data(boolean)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(int32_t number)
|
JsonNode::JsonNode(int32_t number)
|
||||||
: data(static_cast<int64_t>(number))
|
: data(static_cast<int64_t>(number))
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(uint32_t number)
|
JsonNode::JsonNode(uint32_t number)
|
||||||
: data(static_cast<int64_t>(number))
|
: data(static_cast<int64_t>(number))
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(int64_t number)
|
JsonNode::JsonNode(int64_t number)
|
||||||
: data(number)
|
: data(number)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(double number)
|
JsonNode::JsonNode(double number)
|
||||||
: data(number)
|
: data(number)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(const std::string & string)
|
JsonNode::JsonNode(const std::string & string)
|
||||||
: data(string)
|
: data(string)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(const std::byte * data, size_t datasize)
|
JsonNode::JsonNode(const std::byte * data, size_t datasize)
|
||||||
: JsonNode(data, datasize, JsonParsingSettings())
|
: JsonNode(data, datasize, JsonParsingSettings())
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
JsonNode::JsonNode(const std::byte * data, size_t datasize, const JsonParsingSettings & parserSettings)
|
JsonNode::JsonNode(const std::byte * data, size_t datasize, const JsonParsingSettings & parserSettings)
|
||||||
{
|
{
|
||||||
@ -150,14 +157,16 @@ void JsonNode::setModScope(const std::string & metadata, bool recursive)
|
|||||||
{
|
{
|
||||||
switch(getType())
|
switch(getType())
|
||||||
{
|
{
|
||||||
break; case JsonType::DATA_VECTOR:
|
break;
|
||||||
|
case JsonType::DATA_VECTOR:
|
||||||
{
|
{
|
||||||
for(auto & node : Vector())
|
for(auto & node : Vector())
|
||||||
{
|
{
|
||||||
node.setModScope(metadata);
|
node.setModScope(metadata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break; case JsonType::DATA_STRUCT:
|
break;
|
||||||
|
case JsonType::DATA_STRUCT:
|
||||||
{
|
{
|
||||||
for(auto & node : Struct())
|
for(auto & node : Struct())
|
||||||
{
|
{
|
||||||
@ -190,13 +199,27 @@ void JsonNode::setType(JsonType Type)
|
|||||||
//Set new node type
|
//Set new node type
|
||||||
switch(Type)
|
switch(Type)
|
||||||
{
|
{
|
||||||
break; case JsonType::DATA_NULL: data = JsonData();
|
case JsonType::DATA_NULL:
|
||||||
break; case JsonType::DATA_BOOL: data = JsonData(false);
|
data = JsonData();
|
||||||
break; case JsonType::DATA_FLOAT: data = JsonData(static_cast<double>(0.0));
|
break;
|
||||||
break; case JsonType::DATA_STRING: data = JsonData(std::string());
|
case JsonType::DATA_BOOL:
|
||||||
break; case JsonType::DATA_VECTOR: data = JsonData(JsonVector());
|
data = JsonData(false);
|
||||||
break; case JsonType::DATA_STRUCT: data = JsonData(JsonMap());
|
break;
|
||||||
break; case JsonType::DATA_INTEGER: data = JsonData(static_cast<si64>(0));
|
case JsonType::DATA_FLOAT:
|
||||||
|
data = JsonData(static_cast<double>(0.0));
|
||||||
|
break;
|
||||||
|
case JsonType::DATA_STRING:
|
||||||
|
data = JsonData(std::string());
|
||||||
|
break;
|
||||||
|
case JsonType::DATA_VECTOR:
|
||||||
|
data = JsonData(JsonVector());
|
||||||
|
break;
|
||||||
|
case JsonType::DATA_STRUCT:
|
||||||
|
data = JsonData(JsonMap());
|
||||||
|
break;
|
||||||
|
case JsonType::DATA_INTEGER:
|
||||||
|
data = JsonData(static_cast<si64>(0));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ private:
|
|||||||
std::string modScope;
|
std::string modScope;
|
||||||
|
|
||||||
bool overrideFlag = false;
|
bool overrideFlag = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
JsonNode() = default;
|
JsonNode() = default;
|
||||||
|
|
||||||
@ -145,7 +146,8 @@ public:
|
|||||||
std::string toString() const;
|
std::string toString() const;
|
||||||
std::vector<std::byte> toBytes() const;
|
std::vector<std::byte> toBytes() const;
|
||||||
|
|
||||||
template <typename Handler> void serialize(Handler &h)
|
template<typename Handler>
|
||||||
|
void serialize(Handler & h)
|
||||||
{
|
{
|
||||||
h & modScope;
|
h & modScope;
|
||||||
|
|
||||||
|
@ -11,18 +11,18 @@
|
|||||||
#include "StdInc.h"
|
#include "StdInc.h"
|
||||||
#include "JsonParser.h"
|
#include "JsonParser.h"
|
||||||
|
|
||||||
#include "JsonFormatException.h"
|
|
||||||
#include "../TextOperations.h"
|
#include "../TextOperations.h"
|
||||||
|
#include "JsonFormatException.h"
|
||||||
|
|
||||||
VCMI_LIB_NAMESPACE_BEGIN
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
JsonParser::JsonParser(const char * inputString, size_t stringSize, const JsonParsingSettings & settings):
|
JsonParser::JsonParser(const char * inputString, size_t stringSize, const JsonParsingSettings & settings)
|
||||||
input(inputString, stringSize),
|
: input(inputString, stringSize)
|
||||||
settings(settings),
|
, settings(settings)
|
||||||
currentDepth(0),
|
, currentDepth(0)
|
||||||
lineCount(1),
|
, lineCount(1)
|
||||||
lineStart(0),
|
, lineStart(0)
|
||||||
pos(0)
|
, pos(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,13 +79,20 @@ bool JsonParser::extractValue(JsonNode &node)
|
|||||||
|
|
||||||
switch(input[pos])
|
switch(input[pos])
|
||||||
{
|
{
|
||||||
case '\"': return extractString(node);
|
case '\"':
|
||||||
case 'n' : return extractNull(node);
|
return extractString(node);
|
||||||
case 't' : return extractTrue(node);
|
case 'n':
|
||||||
case 'f' : return extractFalse(node);
|
return extractNull(node);
|
||||||
case '{' : return extractStruct(node);
|
case 't':
|
||||||
case '[' : return extractArray(node);
|
return extractTrue(node);
|
||||||
case '-' : return extractFloat(node);
|
case 'f':
|
||||||
|
return extractFalse(node);
|
||||||
|
case '{':
|
||||||
|
return extractStruct(node);
|
||||||
|
case '[':
|
||||||
|
return extractArray(node);
|
||||||
|
case '-':
|
||||||
|
return extractFloat(node);
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
if(input[pos] >= '0' && input[pos] <= '9')
|
if(input[pos] >= '0' && input[pos] <= '9')
|
||||||
@ -142,15 +149,32 @@ bool JsonParser::extractEscaping(std::string &str)
|
|||||||
|
|
||||||
switch(input[pos])
|
switch(input[pos])
|
||||||
{
|
{
|
||||||
break; case '\"': str += '\"';
|
case '\"':
|
||||||
break; case '\\': str += '\\';
|
str += '\"';
|
||||||
break; case 'b': str += '\b';
|
break;
|
||||||
break; case 'f': str += '\f';
|
case '\\':
|
||||||
break; case 'n': str += '\n';
|
str += '\\';
|
||||||
break; case 'r': str += '\r';
|
break;
|
||||||
break; case 't': str += '\t';
|
case 'b':
|
||||||
break; case '/': str += '/';
|
str += '\b';
|
||||||
break; default: return error("Unknown escape sequence!", true);
|
break;
|
||||||
|
case 'f':
|
||||||
|
str += '\f';
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
str += '\n';
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
str += '\r';
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
str += '\t';
|
||||||
|
break;
|
||||||
|
case '/':
|
||||||
|
str += '/';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return error("Unknown escape sequence!", true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -551,8 +575,7 @@ bool JsonParser::error(const std::string &message, bool warning)
|
|||||||
std::ostringstream stream;
|
std::ostringstream stream;
|
||||||
std::string type(warning ? " warning: " : " error: ");
|
std::string type(warning ? " warning: " : " error: ");
|
||||||
|
|
||||||
stream << "At line " << lineCount << ", position "<<pos-lineStart
|
stream << "At line " << lineCount << ", position " << pos - lineStart << type << message << "\n";
|
||||||
<< type << message <<"\n";
|
|
||||||
errors += stream.str();
|
errors += stream.str();
|
||||||
|
|
||||||
return warning;
|
return warning;
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "GameCallbackHolder.h"
|
||||||
#include "GameConstants.h"
|
#include "GameConstants.h"
|
||||||
#include "ResourceSet.h"
|
#include "ResourceSet.h"
|
||||||
#include "GameCallbackHolder.h"
|
|
||||||
|
|
||||||
VCMI_LIB_NAMESPACE_BEGIN
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
@ -68,9 +68,7 @@ void JsonWriter::writeString(const std::string &string)
|
|||||||
for(; pos < string.size(); pos++)
|
for(; pos < string.size(); pos++)
|
||||||
{
|
{
|
||||||
//we need to check if special character was been already escaped
|
//we need to check if special character was been already escaped
|
||||||
if((string[pos] == '\\')
|
if((string[pos] == '\\') && (pos + 1 < string.size()) && (std::find(escaped_code.begin(), escaped_code.end(), string[pos + 1]) != escaped_code.end()))
|
||||||
&& (pos+1 < string.size())
|
|
||||||
&& (std::find(escaped_code.begin(), escaped_code.end(), string[pos+1]) != escaped_code.end()) )
|
|
||||||
{
|
{
|
||||||
pos++; //write unchanged, next simbol also checked
|
pos++; //write unchanged, next simbol also checked
|
||||||
}
|
}
|
||||||
@ -85,7 +83,6 @@ void JsonWriter::writeString(const std::string &string)
|
|||||||
start = pos + 1;
|
start = pos + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
out.write(string.data() + start, pos - start);
|
out.write(string.data() + start, pos - start);
|
||||||
out << '\"';
|
out << '\"';
|
||||||
@ -99,40 +96,48 @@ void JsonWriter::writeNode(const JsonNode &node)
|
|||||||
|
|
||||||
switch(node.getType())
|
switch(node.getType())
|
||||||
{
|
{
|
||||||
break; case JsonNode::JsonType::DATA_NULL:
|
case JsonNode::JsonType::DATA_NULL:
|
||||||
out << "null";
|
out << "null";
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_BOOL:
|
case JsonNode::JsonType::DATA_BOOL:
|
||||||
if(node.Bool())
|
if(node.Bool())
|
||||||
out << "true";
|
out << "true";
|
||||||
else
|
else
|
||||||
out << "false";
|
out << "false";
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_FLOAT:
|
case JsonNode::JsonType::DATA_FLOAT:
|
||||||
out << node.Float();
|
out << node.Float();
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_STRING:
|
case JsonNode::JsonType::DATA_STRING:
|
||||||
writeString(node.String());
|
writeString(node.String());
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_VECTOR:
|
case JsonNode::JsonType::DATA_VECTOR:
|
||||||
out << "[" << (compactMode ? " " : "\n");
|
out << "[" << (compactMode ? " " : "\n");
|
||||||
writeContainer(node.Vector().begin(), node.Vector().end());
|
writeContainer(node.Vector().begin(), node.Vector().end());
|
||||||
out << (compactMode ? " " : prefix) << "]";
|
out << (compactMode ? " " : prefix) << "]";
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_STRUCT:
|
case JsonNode::JsonType::DATA_STRUCT:
|
||||||
out << "{" << (compactMode ? " " : "\n");
|
out << "{" << (compactMode ? " " : "\n");
|
||||||
writeContainer(node.Struct().begin(), node.Struct().end());
|
writeContainer(node.Struct().begin(), node.Struct().end());
|
||||||
out << (compactMode ? " " : prefix) << "}";
|
out << (compactMode ? " " : prefix) << "}";
|
||||||
|
break;
|
||||||
|
|
||||||
break; case JsonNode::JsonType::DATA_INTEGER:
|
case JsonNode::JsonType::DATA_INTEGER:
|
||||||
out << node.Integer();
|
out << node.Integer();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
compactMode = originalMode;
|
compactMode = originalMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonWriter::JsonWriter(std::ostream & output, bool compact)
|
JsonWriter::JsonWriter(std::ostream & output, bool compact)
|
||||||
: out(output), compact(compact)
|
: out(output)
|
||||||
|
, compact(compact)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ class JsonWriter
|
|||||||
bool compact;
|
bool compact;
|
||||||
//tracks whether we are currently using single-line format
|
//tracks whether we are currently using single-line format
|
||||||
bool compactMode = false;
|
bool compactMode = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<typename Iterator>
|
template<typename Iterator>
|
||||||
void writeContainer(Iterator begin, Iterator end);
|
void writeContainer(Iterator begin, Iterator end);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user