diff options
Diffstat (limited to 'src/zencore/compositebuffer.cpp')
| -rw-r--r-- | src/zencore/compositebuffer.cpp | 13 |
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); } |