ObjectStreamBinaryOut.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #pragma once
  4. #include <Jolt/ObjectStream/ObjectStreamOut.h>
  5. namespace JPH {
  6. /// Implementation of ObjectStream binary output stream.
  7. class ObjectStreamBinaryOut : public ObjectStreamOut
  8. {
  9. public:
  10. /// Constructor and destructor
  11. explicit ObjectStreamBinaryOut(ostream &inStream);
  12. ///@name Output type specific operations
  13. virtual void WriteDataType(EDataType inType) override;
  14. virtual void WriteName(const char *inName) override;
  15. virtual void WriteIdentifier(Identifier inIdentifier) override;
  16. virtual void WriteCount(uint32 inCount) override;
  17. virtual void WritePrimitiveData(const uint8 &inPrimitive) override;
  18. virtual void WritePrimitiveData(const uint16 &inPrimitive) override;
  19. virtual void WritePrimitiveData(const int &inPrimitive) override;
  20. virtual void WritePrimitiveData(const uint32 &inPrimitive) override;
  21. virtual void WritePrimitiveData(const uint64 &inPrimitive) override;
  22. virtual void WritePrimitiveData(const float &inPrimitive) override;
  23. virtual void WritePrimitiveData(const bool &inPrimitive) override;
  24. virtual void WritePrimitiveData(const string &inPrimitive) override;
  25. virtual void WritePrimitiveData(const Float3 &inPrimitive) override;
  26. virtual void WritePrimitiveData(const Vec3 &inPrimitive) override;
  27. virtual void WritePrimitiveData(const Vec4 &inPrimitive) override;
  28. virtual void WritePrimitiveData(const Quat &inPrimitive) override;
  29. virtual void WritePrimitiveData(const Mat44 &inPrimitive) override;
  30. private:
  31. using StringTable = unordered_map<string, uint32>;
  32. StringTable mStringTable;
  33. uint32 mNextStringID;
  34. };
  35. } // JPH