SerializableAttribute.h 1.0 KB

1234567891011121314151617181920212223242526272829
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #pragma once
  4. #include <Jolt/ObjectStream/ObjectStreamIn.h>
  5. #include <Jolt/ObjectStream/ObjectStreamOut.h>
  6. namespace JPH {
  7. using CompoundVisitor = function<void(const void *, const RTTI *)>;
  8. /// Attributes are members of classes that need to be serialized. This extends the
  9. /// basic attribute defined in RTTI.h
  10. class SerializableAttribute : public RTTIAttribute
  11. {
  12. public:
  13. /// Constructor
  14. explicit SerializableAttribute(const char *inName) : RTTIAttribute(inName) { }
  15. ///@name Serialization operations
  16. virtual bool IsType(int inArrayDepth, ObjectStream::EDataType inDataType, const char *inClassName) const = 0;
  17. virtual bool ReadData(ObjectStreamIn &ioStream, void *inObject) const = 0;
  18. virtual void WriteData(ObjectStreamOut &ioStream, const void *inObject) const = 0;
  19. virtual void WriteDataType(ObjectStreamOut &ioStream) const = 0;
  20. virtual void VisitCompounds(const void *inObject, const CompoundVisitor &inVisitor) const = 0;
  21. };
  22. } // JPH