aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compositebuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore/compositebuffer.cpp')
-rw-r--r--src/zencore/compositebuffer.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/zencore/compositebuffer.cpp b/src/zencore/compositebuffer.cpp
index 735020451..c49bf775c 100644
--- a/src/zencore/compositebuffer.cpp
+++ b/src/zencore/compositebuffer.cpp
@@ -58,7 +58,7 @@ CompositeBuffer::MakeOwned() &&
}
SharedBuffer
-CompositeBuffer::Flatten() const&
+CompositeBuffer::ToShared() const&
{
switch (m_Segments.size())
{
@@ -81,7 +81,7 @@ CompositeBuffer::Flatten() const&
}
SharedBuffer
-CompositeBuffer::Flatten() &&
+CompositeBuffer::ToShared() &&
{
return m_Segments.size() == 1 ? std::move(m_Segments[0]) : std::as_const(*this).Flatten();
}
@@ -100,10 +100,13 @@ CompositeBuffer::Mid(uint64_t Offset, uint64_t Size) const
}
MemoryView
-CompositeBuffer::ViewOrCopyRange(uint64_t Offset, uint64_t Size, UniqueBuffer& CopyBuffer) const
+CompositeBuffer::ViewOrCopyRange(uint64_t Offset,
+ uint64_t Size,
+ UniqueBuffer& CopyBuffer,
+ std::function<UniqueBuffer(uint64_t Size)> Allocator) const
{
MemoryView View;
- IterateRange(Offset, Size, [Size, &View, &CopyBuffer, WriteView = MutableMemoryView()](MemoryView Segment) mutable {
+ IterateRange(Offset, Size, [Size, &View, &CopyBuffer, &Allocator, WriteView = MutableMemoryView()](MemoryView Segment) mutable {
if (Size == Segment.GetSize())
{
View = Segment;
@@ -114,7 +117,7 @@ CompositeBuffer::ViewOrCopyRange(uint64_t Offset, uint64_t Size, UniqueBuffer& C
{
if (CopyBuffer.GetSize() < Size)
{
- CopyBuffer = UniqueBuffer::Alloc(Size);
+ CopyBuffer = Allocator(Size);
}
View = WriteView = CopyBuffer.GetMutableView().Left(Size);
}