gamut v0.0.7 ask for what you want

wjoe invalid at example.com
Thu Aug 11 11:06:43 UTC 2022


On Tuesday, 9 August 2022 at 22:02:37 UTC, Guillaume Piolat wrote:
> On Monday, 8 August 2022 at 16:07:54 UTC, wjoe wrote:
>> your lib would not just be @nogc but @no_allocation.
>
> All image decoders in gamut need to malloc more than just for 
> pixel data.
> Even STB allocates for format conversion, zlib buffers, 16-bit 
> <-> 8-bit, etc. it's not just pixel data.
> Single allocation pessimizes the size a lot because since you 
> haven't encoded yet, you need to prepare a buffer for a large 
> worst-case.

I imagined you could allocate internal buffers for 
encoding/decoding on the stack but your reply suggests otherwise.

However shouldn't a single function call back be enough? 
Something like

``` D
void[] need_more_ram(size_t amount, void[] old_chunk, void* user)
{
   MyAllocator* a = cast(MyAllocator*)user;
   void[] result = a.alloc(amount); // MyAllocator would return an 
empty slice if amount == 0
   if (amount && chunk.length) result[0..chunk.length] = chunk; // 
it is assumed that on re-allocation amount > chunk.length
   a.free(chunk.ptr);
   return result;
}
```


More information about the Digitalmars-d-announce mailing list