WIP: Add marker macros for versioning
This commit is contained in:
parent
5e72012ed5
commit
2c243c3e41
|
@ -1,8 +1,11 @@
|
||||||
#ifndef REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
#ifndef REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
||||||
#define REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
#define REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
||||||
|
|
||||||
|
#define REFLECTIVE_RAPIDJSON_SHORT_MACROS
|
||||||
|
|
||||||
#include "../../lib/binary/serializable.h"
|
#include "../../lib/binary/serializable.h"
|
||||||
#include "../../lib/json/serializable.h"
|
#include "../../lib/json/serializable.h"
|
||||||
|
#include "../../lib/versioning.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace ReflectiveRapidJSON;
|
using namespace ReflectiveRapidJSON;
|
||||||
|
@ -67,4 +70,17 @@ struct PointerStruct : public BinarySerializable<PointerStruct> {
|
||||||
std::shared_ptr<PointerTarget> s3;
|
std::shared_ptr<PointerTarget> s3;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief The PointerStruct struct is used to test the behavior of the binary (de)serialization with smart pointer.
|
||||||
|
*/
|
||||||
|
struct VersionedStruct : public BinarySerializable<VersionedStruct> {
|
||||||
|
std::uint32_t a, b;
|
||||||
|
|
||||||
|
until_version(2):
|
||||||
|
std::uint32_t c, d;
|
||||||
|
|
||||||
|
as_of_version(3):
|
||||||
|
std::uint32_t e, f;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
#endif // REFLECTIVE_RAPIDJSON_TESTS_MORE_STRUCTS_H
|
||||||
|
|
|
@ -5,7 +5,7 @@ set(META_PROJECT_TYPE library)
|
||||||
set(META_HEADER_ONLY_LIB ON)
|
set(META_HEADER_ONLY_LIB ON)
|
||||||
|
|
||||||
# add project files
|
# add project files
|
||||||
set(HEADER_FILES traits.h)
|
set(HEADER_FILES traits.h versioning.h)
|
||||||
set(SRC_FILES)
|
set(SRC_FILES)
|
||||||
set(TEST_HEADER_FILES)
|
set(TEST_HEADER_FILES)
|
||||||
set(TEST_SRC_FILES)
|
set(TEST_SRC_FILES)
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef REFLECTIVE_RAPIDJSON_VERSIONING
|
||||||
|
#define REFLECTIVE_RAPIDJSON_VERSIONING
|
||||||
|
|
||||||
|
namespace ReflectiveRapidJSON {
|
||||||
|
|
||||||
|
#ifdef REFLECTIVE_RAPIDJSON_GENERATOR
|
||||||
|
#define REFLECTIVE_RAPIDJSON_CAT_1(a, b) a##b
|
||||||
|
#define REFLECTIVE_RAPIDJSON_CAT_2(a, b) REFLECTIVE_RAPIDJSON_CAT_1(a, b)
|
||||||
|
#define REFLECTIVE_RAPIDJSON_AS_OF_VERSION(version) \
|
||||||
|
constexpr std::size_t REFLECTIVE_RAPIDJSON_CAT_2(rrjAsOfVersion, __COUNTER__) = version; \
|
||||||
|
public
|
||||||
|
#define REFLECTIVE_RAPIDJSON_UNTIL_VERSION(version) \
|
||||||
|
constexpr std::size_t REFLECTIVE_RAPIDJSON_CAT_2(rrjUntilVersion, __COUNTER__) = version; \
|
||||||
|
public
|
||||||
|
#else
|
||||||
|
#define REFLECTIVE_RAPIDJSON_AS_OF_VERSION(version) public
|
||||||
|
#define REFLECTIVE_RAPIDJSON_UNTIL_VERSION(version) public
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef REFLECTIVE_RAPIDJSON_SHORT_MACROS
|
||||||
|
#define as_of_version(version) REFLECTIVE_RAPIDJSON_AS_OF_VERSION(version)
|
||||||
|
#define until_version(version) REFLECTIVE_RAPIDJSON_UNTIL_VERSION(version)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace ReflectiveRapidJSON
|
||||||
|
|
||||||
|
#endif // REFLECTIVE_RAPIDJSON_TRAITS
|
Loading…
Reference in New Issue