mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-16 14:08:59 +07:00
move xml and json assets to public headers
This commit is contained in:
@@ -6,15 +6,14 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <enduro2d/high/library.hpp>
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "json_utils.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class json_asset final : public content_asset<json_asset, rapidjson::Document> {
|
class json_asset final : public content_asset<json_asset, rapidjson::Document> {
|
||||||
public:
|
public:
|
||||||
using content_asset<json_asset, rapidjson::Document>::content_asset;
|
|
||||||
static load_async_result load_async(const library& library, str_view address);
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -6,15 +6,14 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <enduro2d/high/library.hpp>
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "xml_utils.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class xml_asset final : public content_asset<xml_asset, pugi::xml_document> {
|
class xml_asset final : public content_asset<xml_asset, pugi::xml_document> {
|
||||||
public:
|
public:
|
||||||
using content_asset<xml_asset, pugi::xml_document>::content_asset;
|
|
||||||
static load_async_result load_async(const library& library, str_view address);
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
#include "image.hpp"
|
#include "image.hpp"
|
||||||
#include "intrusive_list.hpp"
|
#include "intrusive_list.hpp"
|
||||||
#include "intrusive_ptr.hpp"
|
#include "intrusive_ptr.hpp"
|
||||||
|
#include "json_utils.hpp"
|
||||||
#include "mesh.hpp"
|
#include "mesh.hpp"
|
||||||
#include "module.hpp"
|
#include "module.hpp"
|
||||||
#include "path.hpp"
|
#include "path.hpp"
|
||||||
@@ -26,3 +27,4 @@
|
|||||||
#include "strings.inl"
|
#include "strings.inl"
|
||||||
#include "time.hpp"
|
#include "time.hpp"
|
||||||
#include "url.hpp"
|
#include "url.hpp"
|
||||||
|
#include "xml_utils.hpp"
|
||||||
|
|||||||
@@ -6,11 +6,16 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <enduro2d/high/_high.hpp>
|
#include "_utils.hpp"
|
||||||
|
|
||||||
#include <3rdparty/rapidjson/schema.h>
|
#include <3rdparty/rapidjson/schema.h>
|
||||||
#include <3rdparty/rapidjson/document.h>
|
#include <3rdparty/rapidjson/document.h>
|
||||||
|
|
||||||
|
namespace e2d { namespace json_utils
|
||||||
|
{
|
||||||
|
void add_common_schema_definitions(rapidjson::Document& schema);
|
||||||
|
}}
|
||||||
|
|
||||||
namespace e2d { namespace json_utils
|
namespace e2d { namespace json_utils
|
||||||
{
|
{
|
||||||
bool try_parse_value(const rapidjson::Value& root, v2i& v) noexcept;
|
bool try_parse_value(const rapidjson::Value& root, v2i& v) noexcept;
|
||||||
@@ -46,8 +51,6 @@ namespace e2d { namespace json_utils
|
|||||||
bool try_parse_value(const rapidjson::Value& root, str16& s) noexcept;
|
bool try_parse_value(const rapidjson::Value& root, str16& s) noexcept;
|
||||||
bool try_parse_value(const rapidjson::Value& root, str32& s) noexcept;
|
bool try_parse_value(const rapidjson::Value& root, str32& s) noexcept;
|
||||||
bool try_parse_value(const rapidjson::Value& root, str_hash& s) noexcept;
|
bool try_parse_value(const rapidjson::Value& root, str_hash& s) noexcept;
|
||||||
|
|
||||||
void add_common_schema_definitions(rapidjson::Document& schema);
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
namespace e2d { namespace json_utils
|
namespace e2d { namespace json_utils
|
||||||
@@ -65,10 +68,10 @@ namespace e2d { namespace json_utils
|
|||||||
std::is_integral<T>::value &&
|
std::is_integral<T>::value &&
|
||||||
std::is_signed<T>::value, bool>
|
std::is_signed<T>::value, bool>
|
||||||
try_parse_value(const rapidjson::Value& root, T& v) noexcept {
|
try_parse_value(const rapidjson::Value& root, T& v) noexcept {
|
||||||
if ( !root.IsNumber() || !root.IsInt() ) {
|
if ( !root.IsNumber() || !root.IsInt64() ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const auto iv = root.GetInt();
|
const auto iv = root.GetInt64();
|
||||||
if ( iv < std::numeric_limits<T>::min() ) {
|
if ( iv < std::numeric_limits<T>::min() ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -84,11 +87,17 @@ namespace e2d { namespace json_utils
|
|||||||
std::is_integral<T>::value &&
|
std::is_integral<T>::value &&
|
||||||
std::is_unsigned<T>::value, bool>
|
std::is_unsigned<T>::value, bool>
|
||||||
try_parse_value(const rapidjson::Value& root, T& v) noexcept {
|
try_parse_value(const rapidjson::Value& root, T& v) noexcept {
|
||||||
i32 iv{0};
|
if ( !root.IsNumber() || !root.IsUint64() ) {
|
||||||
if ( !try_parse_value(root, iv) || iv < 0 ) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
v = math::numeric_cast<T>(iv);
|
const auto uv = root.GetUint64();
|
||||||
|
if ( uv < std::numeric_limits<T>::min() ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ( uv > std::numeric_limits<T>::max() ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
v = math::numeric_cast<T>(uv);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,10 +120,7 @@ namespace e2d { namespace json_utils
|
|||||||
try_parse_value(
|
try_parse_value(
|
||||||
std::declval<const rapidjson::Value&>(),
|
std::declval<const rapidjson::Value&>(),
|
||||||
std::declval<T&>()));
|
std::declval<T&>()));
|
||||||
}}
|
|
||||||
|
|
||||||
namespace e2d { namespace json_utils
|
|
||||||
{
|
|
||||||
template < typename T >
|
template < typename T >
|
||||||
std::enable_if_t<
|
std::enable_if_t<
|
||||||
stdex::is_detected<json_utils::has_try_parse_value, T>::value,
|
stdex::is_detected<json_utils::has_try_parse_value, T>::value,
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <enduro2d/high/_high.hpp>
|
#include "_utils.hpp"
|
||||||
|
|
||||||
#include <3rdparty/pugixml/pugixml.hpp>
|
#include <3rdparty/pugixml/pugixml.hpp>
|
||||||
|
|
||||||
@@ -53,11 +53,11 @@ cp -rfv $MODULES_DIR/promise.hpp/jobber.hpp $HEADERS_RDPARTY_DIR/promise.hpp/job
|
|||||||
cp -rfv $MODULES_DIR/promise.hpp/promise.hpp $HEADERS_RDPARTY_DIR/promise.hpp/promise.hpp
|
cp -rfv $MODULES_DIR/promise.hpp/promise.hpp $HEADERS_RDPARTY_DIR/promise.hpp/promise.hpp
|
||||||
cp -rfv $MODULES_DIR/promise.hpp/scheduler.hpp $HEADERS_RDPARTY_DIR/promise.hpp/scheduler.hpp
|
cp -rfv $MODULES_DIR/promise.hpp/scheduler.hpp $HEADERS_RDPARTY_DIR/promise.hpp/scheduler.hpp
|
||||||
|
|
||||||
mkdir -p $SOURCES_RDPARTY_DIR/pugixml
|
mkdir -p $HEADERS_RDPARTY_DIR/pugixml
|
||||||
cp -rfv $MODULES_DIR/pugixml/src/. $SOURCES_RDPARTY_DIR/pugixml/
|
cp -rfv $MODULES_DIR/pugixml/src/. $HEADERS_RDPARTY_DIR/pugixml/
|
||||||
|
|
||||||
mkdir -p $SOURCES_RDPARTY_DIR/rapidjson
|
mkdir -p $HEADERS_RDPARTY_DIR/rapidjson
|
||||||
cp -rfv $MODULES_DIR/rapidjson/include/rapidjson/. $SOURCES_RDPARTY_DIR/rapidjson
|
cp -rfv $MODULES_DIR/rapidjson/include/rapidjson/. $HEADERS_RDPARTY_DIR/rapidjson
|
||||||
|
|
||||||
mkdir -p $SOURCES_RDPARTY_DIR/stb
|
mkdir -p $SOURCES_RDPARTY_DIR/stb
|
||||||
cp -fv $MODULES_DIR/stb/stb_image.h $SOURCES_RDPARTY_DIR/stb/stb_image.h
|
cp -fv $MODULES_DIR/stb/stb_image.h $SOURCES_RDPARTY_DIR/stb/stb_image.h
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/atlas_asset.hpp>
|
#include <enduro2d/high/assets/atlas_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
#include <enduro2d/high/assets/sprite_asset.hpp>
|
#include <enduro2d/high/assets/sprite_asset.hpp>
|
||||||
#include <enduro2d/high/assets/texture_asset.hpp>
|
#include <enduro2d/high/assets/texture_asset.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/flipbook_asset.hpp>
|
#include <enduro2d/high/assets/flipbook_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
#include <enduro2d/high/assets/atlas_asset.hpp>
|
#include <enduro2d/high/assets/atlas_asset.hpp>
|
||||||
#include <enduro2d/high/assets/sprite_asset.hpp>
|
#include <enduro2d/high/assets/sprite_asset.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
|
|
||||||
#include <enduro2d/high/assets/text_asset.hpp>
|
#include <enduro2d/high/assets/text_asset.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/material_asset.hpp>
|
#include <enduro2d/high/assets/material_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
#include <enduro2d/high/assets/shader_asset.hpp>
|
#include <enduro2d/high/assets/shader_asset.hpp>
|
||||||
#include <enduro2d/high/assets/texture_asset.hpp>
|
#include <enduro2d/high/assets/texture_asset.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/model_asset.hpp>
|
#include <enduro2d/high/assets/model_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/prefab_asset.hpp>
|
#include <enduro2d/high/assets/prefab_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/shader_asset.hpp>
|
#include <enduro2d/high/assets/shader_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
#include <enduro2d/high/assets/text_asset.hpp>
|
#include <enduro2d/high/assets/text_asset.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <enduro2d/high/assets/sprite_asset.hpp>
|
#include <enduro2d/high/assets/sprite_asset.hpp>
|
||||||
|
|
||||||
#include "json_asset.hpp"
|
#include <enduro2d/high/assets/json_asset.hpp>
|
||||||
#include <enduro2d/high/assets/atlas_asset.hpp>
|
#include <enduro2d/high/assets/atlas_asset.hpp>
|
||||||
#include <enduro2d/high/assets/texture_asset.hpp>
|
#include <enduro2d/high/assets/texture_asset.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "xml_asset.hpp"
|
#include <enduro2d/high/assets/xml_asset.hpp>
|
||||||
|
|
||||||
#include <enduro2d/high/assets/text_asset.hpp>
|
#include <enduro2d/high/assets/text_asset.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|||||||
@@ -4,7 +4,11 @@
|
|||||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "json_utils.hpp"
|
#include <enduro2d/utils/json_utils.hpp>
|
||||||
|
|
||||||
|
#include <enduro2d/utils/color.hpp>
|
||||||
|
#include <enduro2d/utils/color32.hpp>
|
||||||
|
#include <enduro2d/utils/strings.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@@ -193,7 +197,6 @@ namespace
|
|||||||
if ( !defs_doc ) {
|
if ( !defs_doc ) {
|
||||||
rapidjson::Document doc;
|
rapidjson::Document doc;
|
||||||
if ( doc.Parse(common_schema_definitions_source).HasParseError() ) {
|
if ( doc.Parse(common_schema_definitions_source).HasParseError() ) {
|
||||||
the<debug>().error("JSON_UTILS: Failed to parse common schema definitions");
|
|
||||||
throw json_utils_exception();
|
throw json_utils_exception();
|
||||||
}
|
}
|
||||||
defs_doc = std::make_unique<rapidjson::Document>(std::move(doc));
|
defs_doc = std::make_unique<rapidjson::Document>(std::move(doc));
|
||||||
@@ -201,6 +204,15 @@ namespace
|
|||||||
|
|
||||||
return *defs_doc;
|
return *defs_doc;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
using namespace e2d;
|
||||||
|
|
||||||
|
//
|
||||||
|
// vec
|
||||||
|
//
|
||||||
|
|
||||||
template < std::size_t N, typename V, typename FV >
|
template < std::size_t N, typename V, typename FV >
|
||||||
bool parse_vN(const rapidjson::Value& root, V& v, FV&& f) noexcept {
|
bool parse_vN(const rapidjson::Value& root, V& v, FV&& f) noexcept {
|
||||||
@@ -239,6 +251,26 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template < u32 N, typename V >
|
||||||
|
bool parse_vNi(const rapidjson::Value& root, V& v) noexcept {
|
||||||
|
return parse_vN<N>(root, v, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetInt();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template < u32 N, typename V >
|
||||||
|
bool parse_vNf(const rapidjson::Value& root, V& v) noexcept {
|
||||||
|
return parse_vN<N>(root, v, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetFloat();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// mat
|
||||||
|
//
|
||||||
|
|
||||||
template < std::size_t N, typename V, typename FV >
|
template < std::size_t N, typename V, typename FV >
|
||||||
bool parse_mN(const rapidjson::Value& root, V& v, FV&& f) noexcept {
|
bool parse_mN(const rapidjson::Value& root, V& v, FV&& f) noexcept {
|
||||||
if ( root.IsArray() ) {
|
if ( root.IsArray() ) {
|
||||||
@@ -268,6 +300,18 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template < u32 N, typename V >
|
||||||
|
bool parse_mNf(const rapidjson::Value& root, V& v) noexcept {
|
||||||
|
return parse_mN<N>(root, v, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetFloat();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// rect
|
||||||
|
//
|
||||||
|
|
||||||
template < typename V, typename FV >
|
template < typename V, typename FV >
|
||||||
bool parse_b2(const rapidjson::Value& root, rect<V>& b, FV&& f) {
|
bool parse_b2(const rapidjson::Value& root, rect<V>& b, FV&& f) {
|
||||||
if ( root.IsObject() ) {
|
if ( root.IsObject() ) {
|
||||||
@@ -311,6 +355,26 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template < typename B >
|
||||||
|
bool parse_b2i(const rapidjson::Value& root, B& b) noexcept {
|
||||||
|
return parse_b2(root, b, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetInt();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename B >
|
||||||
|
bool parse_b2f(const rapidjson::Value& root, B& b) noexcept {
|
||||||
|
return parse_b2(root, b, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetFloat();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// aabb
|
||||||
|
//
|
||||||
|
|
||||||
template < typename V, typename FV >
|
template < typename V, typename FV >
|
||||||
bool parse_b3(const rapidjson::Value& root, aabb<V>& b, FV&& f) {
|
bool parse_b3(const rapidjson::Value& root, aabb<V>& b, FV&& f) {
|
||||||
if ( root.IsObject() ) {
|
if ( root.IsObject() ) {
|
||||||
@@ -354,6 +418,26 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template < typename B >
|
||||||
|
bool parse_b3i(const rapidjson::Value& root, B& b) noexcept {
|
||||||
|
return parse_b3(root, b, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetInt();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename B >
|
||||||
|
bool parse_b3f(const rapidjson::Value& root, B& b) noexcept {
|
||||||
|
return parse_b3(root, b, [](const rapidjson::Value& jv){
|
||||||
|
E2D_ASSERT(jv.IsNumber());
|
||||||
|
return jv.GetFloat();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// color
|
||||||
|
//
|
||||||
|
|
||||||
bool parse_clr(const rapidjson::Value& root, color& c) {
|
bool parse_clr(const rapidjson::Value& root, color& c) {
|
||||||
if ( root.IsNumber() ) {
|
if ( root.IsNumber() ) {
|
||||||
f32 cv = math::clamp(root.GetFloat(), 0.f, 1.f);
|
f32 cv = math::clamp(root.GetFloat(), 0.f, 1.f);
|
||||||
@@ -391,6 +475,10 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// color32
|
||||||
|
//
|
||||||
|
|
||||||
bool parse_clr(const rapidjson::Value& root, color32& c) {
|
bool parse_clr(const rapidjson::Value& root, color32& c) {
|
||||||
if ( root.IsNumber() ) {
|
if ( root.IsNumber() ) {
|
||||||
u8 cv = math::numeric_cast<u8>(math::clamp(root.GetInt(), 0, 255));
|
u8 cv = math::numeric_cast<u8>(math::clamp(root.GetInt(), 0, 255));
|
||||||
@@ -427,64 +515,20 @@ namespace
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template < u32 N, typename V >
|
|
||||||
bool parse_vNi(const rapidjson::Value& root, V& v) noexcept {
|
|
||||||
return parse_vN<N>(root, v, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetInt();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < u32 N, typename V >
|
|
||||||
bool parse_vNf(const rapidjson::Value& root, V& v) noexcept {
|
|
||||||
return parse_vN<N>(root, v, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetFloat();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < u32 N, typename V >
|
|
||||||
bool parse_mNf(const rapidjson::Value& root, V& v) noexcept {
|
|
||||||
return parse_mN<N>(root, v, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetFloat();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename B >
|
|
||||||
bool parse_b2i(const rapidjson::Value& root, B& b) noexcept {
|
|
||||||
return parse_b2(root, b, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetInt();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename B >
|
|
||||||
bool parse_b2f(const rapidjson::Value& root, B& b) noexcept {
|
|
||||||
return parse_b2(root, b, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetFloat();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename B >
|
|
||||||
bool parse_b3i(const rapidjson::Value& root, B& b) noexcept {
|
|
||||||
return parse_b3(root, b, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetInt();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename B >
|
|
||||||
bool parse_b3f(const rapidjson::Value& root, B& b) noexcept {
|
|
||||||
return parse_b3(root, b, [](const rapidjson::Value& jv){
|
|
||||||
E2D_ASSERT(jv.IsNumber());
|
|
||||||
return jv.GetFloat();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace e2d { namespace json_utils
|
||||||
|
{
|
||||||
|
void add_common_schema_definitions(rapidjson::Document& schema) {
|
||||||
|
schema.AddMember(
|
||||||
|
"common_definitions",
|
||||||
|
rapidjson::Value(
|
||||||
|
common_schema_definitions(),
|
||||||
|
schema.GetAllocator()).Move(),
|
||||||
|
schema.GetAllocator());
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
namespace e2d { namespace json_utils
|
namespace e2d { namespace json_utils
|
||||||
{
|
{
|
||||||
bool try_parse_value(const rapidjson::Value& root, v2i& v) noexcept {
|
bool try_parse_value(const rapidjson::Value& root, v2i& v) noexcept {
|
||||||
@@ -672,13 +716,4 @@ namespace e2d { namespace json_utils
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_common_schema_definitions(rapidjson::Document& schema) {
|
|
||||||
schema.AddMember(
|
|
||||||
"common_definitions",
|
|
||||||
rapidjson::Value(
|
|
||||||
common_schema_definitions(),
|
|
||||||
schema.GetAllocator()).Move(),
|
|
||||||
schema.GetAllocator());
|
|
||||||
}
|
|
||||||
}}
|
}}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "xml_utils.hpp"
|
#include <enduro2d/utils/xml_utils.hpp>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
Reference in New Issue
Block a user