mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 17:16:14 +03:00
33 lines
1.1 KiB
C++
33 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#define kAssetVersion 3
|
|
|
|
// Archive macro for convince.
|
|
|
|
// Version and type registry.
|
|
#define ASSET_ARCHIVE_IMPL_BASIC(AssetNameXX, Version) \
|
|
CEREAL_CLASS_VERSION(engine::AssetNameXX, Version); \
|
|
CEREAL_REGISTER_TYPE_WITH_NAME(engine::AssetNameXX, "engine::"#AssetNameXX);
|
|
|
|
// Virtual children class.
|
|
#define ASSET_ARCHIVE_IMPL_INHERIT(AssetNameXX, AssetNamePP) \
|
|
ASSET_ARCHIVE_IMPL_BASIC(AssetNameXX, kAssetVersion); \
|
|
CEREAL_REGISTER_POLYMORPHIC_RELATION(engine::AssetNamePP, engine::AssetNameXX)\
|
|
template<class Archive> \
|
|
void engine::AssetNameXX::serialize(Archive& archive, std::uint32_t const version) { \
|
|
archive(cereal::base_class<engine::AssetNamePP>(this));
|
|
|
|
// Non virtual class.
|
|
#define ASSET_ARCHIVE_IMPL(AssetNameXX) \
|
|
ASSET_ARCHIVE_IMPL_BASIC(AssetNameXX, kAssetVersion); \
|
|
template<class Archive> \
|
|
void engine::AssetNameXX::serialize(Archive& archive, std::uint32_t const version) {
|
|
|
|
|
|
#define ASSET_ARCHIVE_END }
|
|
|
|
|
|
#define ARCHIVE_ENUM_CLASS(value) \
|
|
size_t enum__type__##value = (size_t)value; \
|
|
ARCHIVE_NVP_DEFAULT(enum__type__##value); \
|
|
value = (decltype(value))(enum__type__##value); |