SerializableAttribute.h 1.1 KB

123456789101112131415161718192021222324252627282930
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #pragma once
  4. #include <ObjectStream/ObjectStreamIn.h>
  5. #include <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. SerializableAttribute(const char *inName) : RTTIAttribute(inName) { }
  15. virtual ~SerializableAttribute() override { }
  16. ///@name Serialization operations
  17. virtual bool IsType(int inArrayDepth, ObjectStream::EDataType inDataType, const char *inClassName) const = 0;
  18. virtual bool ReadData(ObjectStreamIn &ioStream, void *inObject) const = 0;
  19. virtual void WriteData(ObjectStreamOut &ioStream, const void *inObject) const = 0;
  20. virtual void WriteDataType(ObjectStreamOut &ioStream) const = 0;
  21. virtual void VisitCompounds(const void *inObject, const CompoundVisitor &inVisitor) const = 0;
  22. };
  23. } // JPH