Program Listing for File HeapMemoryBuffer.h

Return to documentation for file (Source\Common\Inc\Memory\HeapMemoryBuffer.h)

#pragma once

#include "MemoryBuffer.h"
#include "Types.h"

namespace Azura {
namespace Memory {
class HeapMemoryBuffer final : public MemoryBuffer {
  using Byte = U8;

 public:
  explicit HeapMemoryBuffer(U32 blockSize);

  HeapMemoryBuffer(U32 blockSize, U32 alignment);

  ~HeapMemoryBuffer();

  // Disabled Copy Ctor
  HeapMemoryBuffer(const HeapMemoryBuffer& other) = delete;
  // Disabled Copy Assignment
  HeapMemoryBuffer& operator=(const HeapMemoryBuffer& other) = delete;

  HeapMemoryBuffer(HeapMemoryBuffer&& other) noexcept = default;
  HeapMemoryBuffer& operator=(HeapMemoryBuffer&& other) noexcept = default;

  void* Allocate(U32 size) override;
  void Deallocate(void* address) override;

 private:
  UPTR AllocateRaw(U32 size);
  bool m_isAllocationAligned;
};
}  // namespace Memory
}  // namespace Azura