aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/io/MemoryStream.hpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-17 01:49:37 +0800
committercrupest <crupest@outlook.com>2022-01-17 01:49:37 +0800
commit1d929ee2e71e8e18490ed1266175833e6ad5c609 (patch)
tree21ff8f4ff33b4bc570e3adc99f54a972bfa23dbd /include/cru/common/io/MemoryStream.hpp
parent570e95f4551385a81eb2cf6f2e386e3b0cb291a8 (diff)
downloadcru-1d929ee2e71e8e18490ed1266175833e6ad5c609.tar.gz
cru-1d929ee2e71e8e18490ed1266175833e6ad5c609.tar.bz2
cru-1d929ee2e71e8e18490ed1266175833e6ad5c609.zip
...
Diffstat (limited to 'include/cru/common/io/MemoryStream.hpp')
-rw-r--r--include/cru/common/io/MemoryStream.hpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/include/cru/common/io/MemoryStream.hpp b/include/cru/common/io/MemoryStream.hpp
index 070ef2c6..a1be1354 100644
--- a/include/cru/common/io/MemoryStream.hpp
+++ b/include/cru/common/io/MemoryStream.hpp
@@ -2,16 +2,19 @@
#include "Stream.hpp"
+#include <functional>
+
namespace cru::io {
class CRU_BASE_API MemoryStream : public Stream {
public:
MemoryStream() = default;
- MemoryStream(std::byte* buffer, Index size, bool read_only = false,
- bool auto_release = false)
+ MemoryStream(
+ std::byte* buffer, Index size, bool read_only = false,
+ std::function<void(std::byte* buffer, Index size)> release_func = {})
: buffer_(buffer),
size_(size),
read_only_(read_only),
- auto_release_(auto_release) {}
+ release_func_(std::move(release_func)) {}
CRU_DELETE_COPY(MemoryStream)
CRU_DELETE_MOVE(MemoryStream)
@@ -33,7 +36,7 @@ class CRU_BASE_API MemoryStream : public Stream {
std::byte* buffer_ = nullptr;
Index size_ = 0;
Index position_ = 0;
- bool auto_release_ = false;
bool read_only_ = false;
+ std::function<void(std::byte* buffer, Index size)> release_func_;
};
} // namespace cru::io