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