7#ifdef JPH_OBJECT_STREAM
18template <
class MemberType>
21 static_assert(
sizeof(MemberType) <=
sizeof(
uint64));
22 using SerializationType = std::conditional_t<
sizeof(MemberType) <=
sizeof(
uint32),
uint32,
uint64>;
23 static constexpr EOSDataType serialization_data_type =
sizeof(MemberType) <=
sizeof(
uint32)? EOSDataType::T_uint32 : EOSDataType::T_uint64;
30 [](
int inArrayDepth,
EOSDataType inDataType, [[maybe_unused]]
const char *inClassName)
32 return inArrayDepth == 0 && inDataType == serialization_data_type;
36 SerializationType temporary;
39 *
reinterpret_cast<MemberType *
>(inObject) =
static_cast<MemberType
>(temporary);
46 SerializationType temporary = SerializationType(*
reinterpret_cast<const MemberType *
>(inObject));
51 ioStream.WriteDataType(serialization_data_type);
56#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, alias_name) \
57 JPH::AddSerializableAttributeEnum<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
60#define JPH_ADD_ENUM_ATTRIBUTE(class_name, member_name) \
61 JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name);
67#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(...)
68#define JPH_ADD_ENUM_ATTRIBUTE(...)
std::uint64_t uint64
Definition Core.h:569
unsigned int uint
Definition Core.h:564
#define JPH_NAMESPACE_END
Definition Core.h:487
std::uint32_t uint32
Definition Core.h:567
#define JPH_NAMESPACE_BEGIN
Definition Core.h:481
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:160
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:247
EOSDataType
Data type.
Definition SerializableAttribute.h:17
JPH_NAMESPACE_BEGIN void AddSerializableAttributeEnum(RTTI &inRTTI, uint inOffset, const char *inName)
Definition SerializableAttributeEnum.h:19
Interface class for reading from an object stream.
Definition ObjectStream.h:42
Interface class for writing to an object stream.
Definition ObjectStream.h:78
void AddAttribute(const SerializableAttribute &inAttribute)
Attribute access.
Definition RTTI.cpp:132
Attributes are members of classes that need to be serialized.
Definition SerializableAttribute.h:37