CmManagedDataBlock.cpp 787 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "CmManagedDataBlock.h"
  2. #include "CmException.h"
  3. namespace CamelotEngine
  4. {
  5. ManagedDataBlock::ManagedDataBlock(UINT8* data, UINT32 size, bool managed)
  6. :mData(data), mSize(size), mManaged(managed), mIsDataOwner(true)
  7. { }
  8. ManagedDataBlock::ManagedDataBlock(const ManagedDataBlock& source)
  9. {
  10. mData = source.mData;
  11. mSize = source.mSize;
  12. mManaged = source.mManaged;
  13. mIsDataOwner = true;
  14. source.mIsDataOwner = false;
  15. }
  16. ManagedDataBlock::~ManagedDataBlock()
  17. {
  18. if(mManaged && mIsDataOwner)
  19. delete[] mData;
  20. }
  21. void ManagedDataBlock::destroy()
  22. {
  23. if(mManaged)
  24. CM_EXCEPT(InternalErrorException, "Trying to manually destroy managed data.");
  25. if(mData != nullptr)
  26. delete[] mData;
  27. mSize = 0;
  28. mData = nullptr;
  29. }
  30. }