mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-07-04 12:35:52 +00:00
Merge pull request #29 from lioncash/endian
TypedVariant: Be explicit about athena's Endian type
This commit is contained in:
commit
78d70a8056
@ -205,31 +205,34 @@ private:
|
|||||||
#define AT_SPECIALIZE_TYPED_VARIANT_BIGDNA(...) \
|
#define AT_SPECIALIZE_TYPED_VARIANT_BIGDNA(...) \
|
||||||
template <> \
|
template <> \
|
||||||
template <> \
|
template <> \
|
||||||
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Big>::Read>(typename Read::StreamT & r) { \
|
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Endian::Big>::Read>( \
|
||||||
|
typename Read::StreamT & r) { \
|
||||||
EnumType variant_type = {}; \
|
EnumType variant_type = {}; \
|
||||||
Do<athena::io::DNA<athena::Big>::Read>(athena::io::PropId("variant_type"), variant_type, r); \
|
Do<athena::io::DNA<athena::Endian::Big>::Read>(athena::io::PropId("variant_type"), variant_type, r); \
|
||||||
static_cast<TypedVariant<__VA_ARGS__>&>(*this) = Build(variant_type); \
|
static_cast<TypedVariant<__VA_ARGS__>&>(*this) = Build(variant_type); \
|
||||||
visit([&](auto& var) { var.read(r); }); \
|
visit([&](auto& var) { var.read(r); }); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
template <> \
|
template <> \
|
||||||
template <> \
|
template <> \
|
||||||
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Big>::Write>(typename Write::StreamT & w) { \
|
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Endian::Big>::Write>( \
|
||||||
|
typename Write::StreamT & w) { \
|
||||||
visit([&](auto& var) { \
|
visit([&](auto& var) { \
|
||||||
using T = std::decay_t<decltype(var)>; \
|
using T = std::decay_t<decltype(var)>; \
|
||||||
EnumType variant_type = T::variant_type(); \
|
EnumType variant_type = T::variant_type(); \
|
||||||
Do<athena::io::DNA<athena::Big>::Write>(athena::io::PropId("variant_type"), variant_type, w); \
|
Do<athena::io::DNA<athena::Endian::Big>::Write>(athena::io::PropId("variant_type"), variant_type, w); \
|
||||||
var.write(w); \
|
var.write(w); \
|
||||||
}); \
|
}); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
template <> \
|
template <> \
|
||||||
template <> \
|
template <> \
|
||||||
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Big>::BinarySize>(typename BinarySize::StreamT & sz) { \
|
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Endian::Big>::BinarySize>( \
|
||||||
|
typename BinarySize::StreamT & sz) { \
|
||||||
visit([&](auto& var) { \
|
visit([&](auto& var) { \
|
||||||
using T = std::decay_t<decltype(var)>; \
|
using T = std::decay_t<decltype(var)>; \
|
||||||
EnumType variant_type = T::variant_type(); \
|
EnumType variant_type = T::variant_type(); \
|
||||||
Do<athena::io::DNA<athena::Big>::BinarySize>(athena::io::PropId("variant_type"), variant_type, sz); \
|
Do<athena::io::DNA<athena::Endian::Big>::BinarySize>(athena::io::PropId("variant_type"), variant_type, sz); \
|
||||||
var.binarySize(sz); \
|
var.binarySize(sz); \
|
||||||
}); \
|
}); \
|
||||||
} \
|
} \
|
||||||
@ -242,20 +245,22 @@ inline const char* hecl::TypedVariantBigDNA<__VA_ARGS__>::DNAType() { \
|
|||||||
AT_SPECIALIZE_TYPED_VARIANT_BIGDNA(__VA_ARGS__) \
|
AT_SPECIALIZE_TYPED_VARIANT_BIGDNA(__VA_ARGS__) \
|
||||||
template <> \
|
template <> \
|
||||||
template <> \
|
template <> \
|
||||||
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Big>::ReadYaml>(typename ReadYaml::StreamT & r) { \
|
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Endian::Big>::ReadYaml>( \
|
||||||
|
typename ReadYaml::StreamT & r) { \
|
||||||
EnumType variant_type = {}; \
|
EnumType variant_type = {}; \
|
||||||
Do<athena::io::DNA<athena::Big>::ReadYaml>(athena::io::PropId("variant_type"), variant_type, r); \
|
Do<athena::io::DNA<athena::Endian::Big>::ReadYaml>(athena::io::PropId("variant_type"), variant_type, r); \
|
||||||
static_cast<TypedVariant<__VA_ARGS__>&>(*this) = Build(variant_type); \
|
static_cast<TypedVariant<__VA_ARGS__>&>(*this) = Build(variant_type); \
|
||||||
visit([&](auto& var) { var.read(r); }); \
|
visit([&](auto& var) { var.read(r); }); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
template <> \
|
template <> \
|
||||||
template <> \
|
template <> \
|
||||||
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Big>::WriteYaml>(typename WriteYaml::StreamT & w) { \
|
inline void hecl::TypedVariantBigDNA<__VA_ARGS__>::Enumerate<athena::io::DNA<athena::Endian::Big>::WriteYaml>( \
|
||||||
|
typename WriteYaml::StreamT & w) { \
|
||||||
visit([&](auto& var) { \
|
visit([&](auto& var) { \
|
||||||
using T = std::decay_t<decltype(var)>; \
|
using T = std::decay_t<decltype(var)>; \
|
||||||
EnumType variant_type = T::variant_type(); \
|
EnumType variant_type = T::variant_type(); \
|
||||||
Do<athena::io::DNA<athena::Big>::WriteYaml>(athena::io::PropId("variant_type"), variant_type, w); \
|
Do<athena::io::DNA<athena::Endian::Big>::WriteYaml>(athena::io::PropId("variant_type"), variant_type, w); \
|
||||||
var.write(w); \
|
var.write(w); \
|
||||||
}); \
|
}); \
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user