export module Core.Buffer; import Core.Types; export namespace Core { class Buffer final { size_t length; size_t capacity; char* buffer; public: Buffer() noexcept; Buffer(const Buffer& other) noexcept; Buffer(Buffer&& other) noexcept; ~Buffer() noexcept; Buffer& operator=(const Buffer& other) noexcept; Buffer& operator=(Buffer&& other) noexcept; Buffer& add(const void* data, size_t size) noexcept; template Buffer& add(const T& t) noexcept { return add(&t, sizeof(T)); } size_t getLength() const noexcept; const char* getData() const noexcept; void clear() noexcept; void swap(Buffer& other) noexcept; }; }