Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
mir.appender
Scoped Buffer
License:
Authors:
Ilya Yaroshenko
- struct
ScopedBuffer
(T, size_t bytes = 4096) if (bytes && (T.sizeof <= bytes));
@trusted autoscopedBuffer
(T, size_t bytes = 4096)(); - The buffer uses stack memory and C Runtime to allocate temporal memory.Shouldn't store references to GC allocated data.Examples:
auto buf = scopedBuffer!char; buf.put('c'); buf.put("str"); assert(buf.data == "cstr"); buf.popBackN(2); assert(buf.data == "cs");
Examples:immutableauto buf = scopedBuffer!(immutable char); buf.put('c'); buf.put("str"); assert(buf.data == "cstr"); buf.popBackN(2); assert(buf.data == "cs");
- void
shrinkTo
(size_tlength
); - const @property scope size_t
length
(); - void
popBackN
(size_tn
); - scope @safe void
put
(Te
); - scope void
put
(ref Re
); - scope void
put
(scope R[]e
); - scope void
put
(Iterable)(Iterablerange
)
if (isIterable!Iterable && !__traits(isStaticArray, Iterable) && (!isArray!Iterable || hasElaborateAssign!T)); - nothrow scope void
reset
(); - nothrow @nogc scope @system void
initialize
(); - inout @property scope @safe inout(T)[]
data
(); - @system void
moveDataAndEmplaceTo
(T[]array
); - Copies data into an array of the same length using memcpy C routine. Shrinks the length to 0.
- struct
UnsafeArrayBuffer
(T); - Examples:
char[4] array; auto buf = UnsafeArrayBuffer!char(array); buf.put('c'); buf.put("str"); assert(buf.data == "cstr"); buf.popBackN(2); assert(buf.data == "cs");
- T[]
buffer
; - size_t
length
; - void
put
(Ta
); - void
put
(E[]a
); - inout @property scope @safe inout(T)[]
data
(); - void
popBackN
(size_tn
);
Copyright © 2016-2022 by Ilya Yaroshenko | Page generated by
Ddoc on Tue Jan 11 06:37:06 2022