Buffer.cppm 716 B

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