CmMemorySerializer.h 864 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include "CmPrerequisitesUtil.h"
  3. namespace CamelotFramework
  4. {
  5. class CM_UTILITY_EXPORT MemorySerializer
  6. {
  7. struct BufferPiece
  8. {
  9. UINT8* buffer;
  10. UINT32 size;
  11. };
  12. public:
  13. MemorySerializer();
  14. ~MemorySerializer();
  15. UINT8* encode(IReflectable* object, UINT32& bytesWritten, std::function<void*(UINT32)> allocator = nullptr);
  16. std::shared_ptr<IReflectable> decode(UINT8* buffer, UINT32 bufferSize);
  17. private:
  18. Vector<BufferPiece>::type mBufferPieces;
  19. UINT8* flushBuffer(UINT8* bufferStart, int bytesWritten, UINT32& newBufferSize);
  20. /************************************************************************/
  21. /* CONSTANTS */
  22. /************************************************************************/
  23. private:
  24. static const UINT32 WRITE_BUFFER_SIZE = 2048;
  25. };
  26. }