| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #pragma once
- #include "BsPrerequisitesUtil.h"
- namespace BansheeEngine
- {
- /** @addtogroup Serialization
- * @{
- */
- /**
- * Data block holding an array of bytes, usually used in serialization.
- *
- * Ownership of the data blocked is passed to the latest copy of the ManagedDataBlock. Data will be automatically
- * freed once the last copy is destroyed.
- */
- class BS_UTILITY_EXPORT ManagedDataBlock
- {
- public:
- /**
- * Constructor
- *
- * @param[in] data Array of bytes to store. Direct pointer to the provided array will be stored,
- * no copying will be done.
- * @param[in] size Size of the array, in bytes.
- */
- ManagedDataBlock(UINT8* data, UINT32 size);
- /**
- * Constructor that will automatically allocate an internal buffer of the specified size. Copying ManagedDataBlock
- * transfers ownership of the buffer to the copy of the buffer. Buffer is deleted when the latest copy is deleted.
- *
- * @param[in] size The size of the data in bytes.
- */
- ManagedDataBlock(UINT32 size);
- ManagedDataBlock(const ManagedDataBlock& source);
- ~ManagedDataBlock();
- UINT8* getData() { return mData; }
- UINT32 getSize() { return mData ? mSize : 0; }
- private:
- UINT8* mData;
- UINT32 mSize;
- bool mManaged;
- mutable bool mIsDataOwner;
- };
- /** @} */
- }
|