Buffer.cppm 788 B

12345678910111213141516171819202122232425262728293031
  1. export module Core.Buffer;
  2. import Core.Types;
  3. export namespace Core {
  4. class Buffer final {
  5. size_t length;
  6. size_t capacity;
  7. char* buffer;
  8. public:
  9. Buffer() noexcept;
  10. Buffer(const Buffer& other) noexcept;
  11. Buffer(Buffer&& other) noexcept;
  12. ~Buffer() noexcept;
  13. Buffer& operator=(const Buffer& other) noexcept;
  14. Buffer& operator=(Buffer&& other) noexcept;
  15. Buffer& add(const void* data, size_t size) noexcept;
  16. template<typename T>
  17. Buffer& add(const T& t) noexcept {
  18. return add(&t, sizeof(T));
  19. }
  20. size_t getLength() const noexcept;
  21. const char* getData() const noexcept;
  22. void clear() noexcept;
  23. void swap(Buffer& other) noexcept;
  24. };
  25. }