mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-28 08:48:48 +02:00
Remove old files
This commit is contained in:
parent
c3957c2c2a
commit
0b7bf56597
1268
lib/JsonDetail.cpp
1268
lib/JsonDetail.cpp
File diff suppressed because it is too large
Load Diff
133
lib/JsonDetail.h
133
lib/JsonDetail.h
@ -1,133 +0,0 @@
|
|||||||
/*
|
|
||||||
* JsonDetail.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
|
|
||||||
|
|
||||||
#include "JsonNode.h"
|
|
||||||
|
|
||||||
VCMI_LIB_NAMESPACE_BEGIN
|
|
||||||
|
|
||||||
class JsonWriter
|
|
||||||
{
|
|
||||||
//prefix for each line (tabulation)
|
|
||||||
std::string prefix;
|
|
||||||
std::ostream & out;
|
|
||||||
//sets whether compact nodes are written in single-line format
|
|
||||||
bool compact;
|
|
||||||
//tracks whether we are currently using single-line format
|
|
||||||
bool compactMode = false;
|
|
||||||
public:
|
|
||||||
template<typename Iterator>
|
|
||||||
void writeContainer(Iterator begin, Iterator end);
|
|
||||||
void writeEntry(JsonMap::const_iterator entry);
|
|
||||||
void writeEntry(JsonVector::const_iterator entry);
|
|
||||||
void writeString(const std::string & string);
|
|
||||||
void writeNode(const JsonNode & node);
|
|
||||||
JsonWriter(std::ostream & output, bool compact = false);
|
|
||||||
};
|
|
||||||
|
|
||||||
//Tiny string class that uses const char* as data for speed, members are private
|
|
||||||
//for ease of debugging and some compatibility with std::string
|
|
||||||
class constString
|
|
||||||
{
|
|
||||||
const char *data;
|
|
||||||
const size_t datasize;
|
|
||||||
|
|
||||||
public:
|
|
||||||
constString(const char * inputString, size_t stringSize):
|
|
||||||
data(inputString),
|
|
||||||
datasize(stringSize)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
inline size_t size() const
|
|
||||||
{
|
|
||||||
return datasize;
|
|
||||||
};
|
|
||||||
|
|
||||||
inline const char& operator[] (size_t position)
|
|
||||||
{
|
|
||||||
assert (position < datasize);
|
|
||||||
return data[position];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//Internal class for string -> JsonNode conversion
|
|
||||||
class DLL_LINKAGE JsonParser
|
|
||||||
{
|
|
||||||
std::string errors; // Contains description of all encountered errors
|
|
||||||
constString input; // Input data
|
|
||||||
ui32 lineCount; // Currently parsed line, starting from 1
|
|
||||||
size_t lineStart; // Position of current line start
|
|
||||||
size_t pos; // Current position of parser
|
|
||||||
|
|
||||||
//Helpers
|
|
||||||
bool extractEscaping(std::string &str);
|
|
||||||
bool extractLiteral(const std::string &literal);
|
|
||||||
bool extractString(std::string &string);
|
|
||||||
bool extractWhitespace(bool verbose = true);
|
|
||||||
bool extractSeparator();
|
|
||||||
bool extractElement(JsonNode &node, char terminator);
|
|
||||||
|
|
||||||
//Methods for extracting JSON data
|
|
||||||
bool extractArray(JsonNode &node);
|
|
||||||
bool extractFalse(JsonNode &node);
|
|
||||||
bool extractFloat(JsonNode &node);
|
|
||||||
bool extractNull(JsonNode &node);
|
|
||||||
bool extractString(JsonNode &node);
|
|
||||||
bool extractStruct(JsonNode &node);
|
|
||||||
bool extractTrue(JsonNode &node);
|
|
||||||
bool extractValue(JsonNode &node);
|
|
||||||
|
|
||||||
//Add error\warning message to list
|
|
||||||
bool error(const std::string &message, bool warning=false);
|
|
||||||
|
|
||||||
public:
|
|
||||||
JsonParser(const char * inputString, size_t stringSize);
|
|
||||||
|
|
||||||
/// do actual parsing. filename is name of file that will printed to console if any errors were found
|
|
||||||
JsonNode parse(const std::string & fileName);
|
|
||||||
|
|
||||||
/// returns true if parsing was successful
|
|
||||||
bool isValid();
|
|
||||||
};
|
|
||||||
|
|
||||||
//Internal class for Json validation. Mostly compilant with json-schema v4 draft
|
|
||||||
namespace Validation
|
|
||||||
{
|
|
||||||
/// struct used to pass data around during validation
|
|
||||||
struct ValidationData
|
|
||||||
{
|
|
||||||
/// path from root node to current one.
|
|
||||||
/// JsonNode is used as variant - either string (name of node) or as float (index in list)
|
|
||||||
std::vector<JsonNode> currentPath;
|
|
||||||
|
|
||||||
/// Stack of used schemas. Last schema is the one used currently.
|
|
||||||
/// May contain multiple items in case if remote references were found
|
|
||||||
std::vector<std::string> usedSchemas;
|
|
||||||
|
|
||||||
/// generates error message
|
|
||||||
std::string makeErrorMessage(const std::string &message);
|
|
||||||
};
|
|
||||||
|
|
||||||
using TFormatValidator = std::function<std::string(const JsonNode &)>;
|
|
||||||
using TFormatMap = std::unordered_map<std::string, TFormatValidator>;
|
|
||||||
using TFieldValidator = std::function<std::string(ValidationData &, const JsonNode &, const JsonNode &, const JsonNode &)>;
|
|
||||||
using TValidatorMap = std::unordered_map<std::string, TFieldValidator>;
|
|
||||||
|
|
||||||
/// map of known fields in schema
|
|
||||||
const TValidatorMap & getKnownFieldsFor(JsonNode::JsonType type);
|
|
||||||
const TFormatMap & getKnownFormats();
|
|
||||||
|
|
||||||
std::string check(const std::string & schemaName, const JsonNode & data);
|
|
||||||
std::string check(const std::string & schemaName, const JsonNode & data, ValidationData & validator);
|
|
||||||
std::string check(const JsonNode & schema, const JsonNode & data, ValidationData & validator);
|
|
||||||
}
|
|
||||||
|
|
||||||
VCMI_LIB_NAMESPACE_END
|
|
@ -26,6 +26,8 @@
|
|||||||
#include "../constants/StringConstants.h"
|
#include "../constants/StringConstants.h"
|
||||||
#include "../battle/BattleHex.h"
|
#include "../battle/BattleHex.h"
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
static const JsonNode nullNode;
|
static const JsonNode nullNode;
|
||||||
|
|
||||||
static void loadBonusSubtype(BonusSubtypeID & subtype, BonusType type, const JsonNode & node)
|
static void loadBonusSubtype(BonusSubtypeID & subtype, BonusType type, const JsonNode & node)
|
||||||
@ -1237,3 +1239,5 @@ DLL_LINKAGE JsonNode JsonUtils::intNode(si64 value)
|
|||||||
node.Integer() = value;
|
node.Integer() = value;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_END
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include "JsonNode.h"
|
#include "JsonNode.h"
|
||||||
#include "../GameConstants.h"
|
#include "../GameConstants.h"
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
namespace JsonUtils
|
namespace JsonUtils
|
||||||
{
|
{
|
||||||
DLL_LINKAGE std::shared_ptr<Bonus> parseBonus(const JsonVector & ability_vec);
|
DLL_LINKAGE std::shared_ptr<Bonus> parseBonus(const JsonVector & ability_vec);
|
||||||
@ -102,3 +104,5 @@ namespace JsonUtils
|
|||||||
DLL_LINKAGE JsonNode stringNode(const std::string & value);
|
DLL_LINKAGE JsonNode stringNode(const std::string & value);
|
||||||
DLL_LINKAGE JsonNode intNode(si64 value);
|
DLL_LINKAGE JsonNode intNode(si64 value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VCMI_LIB_NAMESPACE_END
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "LobbyDatabase.h"
|
#include "LobbyDatabase.h"
|
||||||
|
|
||||||
#include "../lib/JsonNode.h"
|
#include "../lib/json/JsonNode.h"
|
||||||
|
|
||||||
#include <boost/uuid/uuid_generators.hpp>
|
#include <boost/uuid/uuid_generators.hpp>
|
||||||
#include <boost/uuid/uuid_io.hpp>
|
#include <boost/uuid/uuid_io.hpp>
|
||||||
|
Loading…
Reference in New Issue
Block a user