std.allocator ready for some abuse
Namespace
rswhite4 at googlemail.com
Thu Nov 7 05:30:08 PST 2013
On Thursday, 7 November 2013 at 13:15:03 UTC, Sönke Ludwig wrote:
> Am 07.11.2013 11:32, schrieb Namespace:
>> How about a stack allocator like this:
>> ----
>> enum StackSize = 8192;
>>
>> struct Stack {
>> static Stack it;
>>
>> void[StackSize] _buffer = void;
>> size_t _bufUsage;
>>
>> void[] take(size_t N) {
>> if ((this._bufUsage + N) <= StackSize) {
>> scope(exit) this._bufUsage += N;
>>
>> return _buffer[this._bufUsage .. this._bufUsage +
>> N];
>> }
>>
>> return null;
>> }
>>
>> void reset() {
>> this._bufUsage = 0;
>> }
>> }
>> ----
>> Would that fit in std.allocator?
>
> That's std.allocator.InSituRegion, just that is misses the
> reset() method.
Nice! But I suggest two things:
1. Add a reset function for reusing the same storage
2. Should that:
https://github.com/andralex/phobos/blob/allocator/std/allocator.d#L2907
not be replaced with ubyte[size] _store = void; ?
More information about the Digitalmars-d
mailing list