13#ifdef JPH_OBJECT_STREAM 
   35    static constexpr int            sVersion = 1;
 
   36    static constexpr int            sRevision = 0;
 
   70    virtual bool                ReadClassData(
const char *inClassName, 
void *inInstance) = 0;
 
  114#define JPH_DECLARE_PRIMITIVE(name)                                                                         \ 
  115    JPH_EXPORT bool OSIsType(name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName);    \ 
  116    JPH_EXPORT bool OSReadData(IObjectStreamIn &ioStream, name &outPrimitive);                              \ 
  117    JPH_EXPORT void OSWriteDataType(IObjectStreamOut &ioStream, name *);                                    \ 
  118    JPH_EXPORT void OSWriteData(IObjectStreamOut &ioStream, const name &inPrimitive); 
  124template <
class T, 
class A>
 
  127    return (inArrayDepth > 0 && 
OSIsType(
static_cast<T *
>(
nullptr), inArrayDepth - 1, inDataType, inClassName));
 
  130template <
class T, u
int N>
 
  133    return (inArrayDepth > 0 && 
OSIsType(
static_cast<T *
>(
nullptr), inArrayDepth - 1, inDataType, inClassName));
 
  136template <
class T, u
int N>
 
  139    return (inArrayDepth > 0 && 
OSIsType(
static_cast<T *
>(
nullptr), inArrayDepth - 1, inDataType, inClassName));
 
  145    return OSIsType(
static_cast<T *
>(
nullptr), inArrayDepth, inDataType, inClassName);
 
  151    return OSIsType(
static_cast<T *
>(
nullptr), inArrayDepth, inDataType, inClassName);
 
  155template <
class T, 
class A>
 
  158    bool continue_reading = 
true;
 
  162    continue_reading = ioStream.
ReadCount(array_length);
 
  165    if (continue_reading)
 
  168        inArray.
resize(array_length);
 
  169        for (
uint32 el = 0; el < array_length && continue_reading; ++el)
 
  170            continue_reading = 
OSReadData(ioStream, inArray[el]);
 
  173    return continue_reading;
 
  177template <
class T, u
int N>
 
  180    bool continue_reading = 
true;
 
  184    continue_reading = ioStream.
ReadCount(array_length);
 
  187    if (array_length > N)
 
  191    if (continue_reading)
 
  194        inArray.
resize(array_length);
 
  195        for (
uint32 el = 0; el < array_length && continue_reading; ++el)
 
  196            continue_reading = 
OSReadData(ioStream, inArray[el]);
 
  199    return continue_reading;
 
  203template <
class T, u
int N>
 
  206    bool continue_reading = 
true;
 
  210    continue_reading = ioStream.
ReadCount(array_length);
 
  211    if (array_length != N)
 
  215    for (
uint32 el = 0; el < N && continue_reading; ++el)
 
  216        continue_reading = 
OSReadData(ioStream, inArray[el]);
 
  218    return continue_reading;
 
  235template <
class T, 
class A>
 
  242template <
class T, 
class A>
 
  251    for (
const T &v : inArray)
 
  257template <
class T, u
int N>
 
  264template <
class T, u
int N>
 
  279template <
class T, u
int N>
 
  286template <
class T, u
int N>
 
  295    for (
const T &v : inArray)
 
  310    if (inRef != 
nullptr)
 
  325    if (inRef != 
nullptr)
 
std::uint8_t uint8
Definition: Core.h:453
 
#define JPH_EXPORT
Definition: Core.h:236
 
std::uint64_t uint64
Definition: Core.h:456
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
std::uint32_t uint32
Definition: Core.h:455
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
std::uint16_t uint16
Definition: Core.h:454
 
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition: ObjectStream.h:125
 
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition: ObjectStream.h:156
 
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition: ObjectStream.h:243
 
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition: ObjectStream.h:236
 
#define JPH_RTTI(class_name)
Definition: RTTI.h:319
 
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition: STLAllocator.h:107
 
EOSDataType
Data type.
Definition: SerializableAttribute.h:17
 
@ Array
Used in attribute declaration, indicates that this is an array of objects.
 
void resize(size_type inNewSize)
Resize array to new length.
Definition: Array.h:118
 
size_type size() const
Returns amount of elements in the array.
Definition: Array.h:318
 
void clear()
Destruct all elements and set length to zero.
Definition: Array.h:143
 
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition: DMat44.h:13
 
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition: Double3.h:13
 
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition: Float3.h:13
 
Interface class for reading from an object stream.
Definition: ObjectStream.h:42
 
virtual bool ReadPrimitiveData(Quat &outPrimitive)=0
 
virtual bool ReadDataType(EOSDataType &outType)=0
 
virtual bool ReadPrimitiveData(double &outPrimitive)=0
 
virtual bool ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0
 
virtual bool ReadPrimitiveData(Vec3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(String &outPrimitive)=0
 
virtual bool ReadPrimitiveData(uint64 &outPrimitive)=0
 
virtual bool ReadIdentifier(Identifier &outIdentifier)=0
 
virtual bool ReadPrimitiveData(Float3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(uint32 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(float &outPrimitive)=0
 
virtual bool ReadPrimitiveData(DMat44 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(int &outPrimitive)=0
 
virtual bool ReadName(String &outName)=0
 
virtual bool ReadPrimitiveData(Mat44 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(DVec3 &outPrimitive)=0
 
virtual bool ReadCount(uint32 &outCount)=0
 
virtual bool ReadPrimitiveData(uint16 &outPrimitive)=0
 
virtual bool ReadClassData(const char *inClassName, void *inInstance)=0
 
virtual bool ReadPrimitiveData(Double3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(uint8 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(Vec4 &outPrimitive)=0
 
virtual bool ReadPrimitiveData(bool &outPrimitive)=0
 
Interface class for writing to an object stream.
Definition: ObjectStream.h:76
 
virtual void WritePrimitiveData(const int &inPrimitive)=0
 
virtual void WritePrimitiveData(const float &inPrimitive)=0
 
virtual void WritePrimitiveData(const Vec3 &inPrimitive)=0
 
virtual void WritePointerData(const RTTI *inRTTI, const void *inPointer)=0
 
virtual void WritePrimitiveData(const DVec3 &inPrimitive)=0
 
virtual void WritePrimitiveData(const String &inPrimitive)=0
 
virtual void WritePrimitiveData(const Quat &inPrimitive)=0
 
virtual void WritePrimitiveData(const uint8 &inPrimitive)=0
 
virtual void WritePrimitiveData(const Float3 &inPrimitive)=0
 
virtual void WritePrimitiveData(const Mat44 &inPrimitive)=0
 
virtual void WritePrimitiveData(const DMat44 &inPrimitive)=0
 
virtual void WritePrimitiveData(const uint32 &inPrimitive)=0
 
virtual void WriteClassData(const RTTI *inRTTI, const void *inInstance)=0
 
virtual void WriteIdentifier(Identifier inIdentifier)=0
 
virtual void WritePrimitiveData(const Vec4 &inPrimitive)=0
 
virtual void WriteDataType(EOSDataType inType)=0
 
virtual void WriteCount(uint32 inCount)=0
 
virtual void WriteName(const char *inName)=0
 
virtual void HintNextItem()
Definition: ObjectStream.h:108
 
virtual void WritePrimitiveData(const uint16 &inPrimitive)=0
 
virtual void HintIndentUp()
Definition: ObjectStream.h:109
 
virtual void WritePrimitiveData(const bool &inPrimitive)=0
 
virtual void WritePrimitiveData(const double &inPrimitive)=0
 
virtual void HintIndentDown()
Definition: ObjectStream.h:110
 
virtual void WritePrimitiveData(const uint64 &inPrimitive)=0
 
virtual void WritePrimitiveData(const Double3 &inPrimitive)=0
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition: NonCopyable.h:11
 
Base class for object stream input and output streams.
Definition: ObjectStream.h:19
 
uint32 Identifier
Identifier for objects.
Definition: ObjectStream.h:33
 
virtual ~ObjectStream()=default
Destructor.
 
EStreamType
Stream type.
Definition: ObjectStream.h:23
 
Definition: Reference.h:157
 
const T * GetPtr() const
Get pointer.
Definition: Reference.h:191
 
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition: Reference.h:194
 
Definition: Reference.h:107
 
T * GetPtr() const
Get pointer.
Definition: Reference.h:135
 
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition: Reference.h:138
 
Simple variable length array backed by a fixed size buffer.
Definition: StaticArray.h:14
 
void clear()
Destruct all elements and set length to zero.
Definition: StaticArray.h:52
 
T value_type
Definition: StaticArray.h:16
 
size_type size() const
Returns amount of elements in the array.
Definition: StaticArray.h:89
 
void resize(size_type inNewSize)
Resize array to new length.
Definition: StaticArray.h:101