replaceRangeAssumeCapacity
Grows or shrinks the list as necessary.
Never invalidates element pointers.
Asserts the capacity is enough for additional items.
Function parameters
Parameters
- self:*Self
- start:usize
- len:usize
- new_items:[]const T
Deprecated.
Functions
- Managed
- Deprecated.
- AlignedManaged
- Deprecated.
- Aligned
- A contiguous, growable list of arbitrarily aligned items in memory.
Source
Implementation
pub fn replaceRangeAssumeCapacity(self: *Self, start: usize, len: usize, new_items: []const T) void {
const after_range = start + len;
const range = self.items[start..after_range];
if (range.len == new_items.len)
@memcpy(range[0..new_items.len], new_items)
else if (range.len < new_items.len) {
const first = new_items[0..range.len];
const rest = new_items[range.len..];
@memcpy(range[0..first.len], first);
const dst = self.addManyAtAssumeCapacity(after_range, rest.len);
@memcpy(dst, rest);
} else {
const extra = range.len - new_items.len;
@memcpy(range[0..new_items.len], new_items);
const src = self.items[after_range..];
@memmove(self.items[after_range - extra ..][0..src.len], src);
@memset(self.items[self.items.len - extra ..], undefined);
self.items.len -= extra;
}
}