Program Listing for File MemoryBuffer.h

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

#pragma once

#include "Types.h"

namespace Azura {
namespace Memory {
class MemoryBuffer {
 public:
  MemoryBuffer() = default;
  explicit MemoryBuffer(U32 size);
  MemoryBuffer(U32 size, AddressPtr blockStart);
  virtual ~MemoryBuffer() = default;

  MemoryBuffer(const MemoryBuffer& other) = delete;
  MemoryBuffer& operator=(const MemoryBuffer& other) = delete;

  MemoryBuffer(MemoryBuffer&& other) noexcept;
  MemoryBuffer& operator=(MemoryBuffer&& other) noexcept;

  virtual void* Allocate(U32 size)       = 0;
  virtual void Deallocate(void* address) = 0;

#ifdef BUILD_UNIT_TEST
  AddressPtr GetCurrentPtr() const {
    return m_currentPosition;
  };
  AddressPtr GetBasePtr() const {
    return m_memoryBlock;
  };
  U32 GetSize() const {
    return m_size;
  };
#endif

 protected:
  AddressPtr m_memoryBlock{0};
  AddressPtr m_currentPosition{0};
  U32 m_size{0};
};
}  // namespace Memory
}  // namespace Azura