On 05/19/2015 09:56 PM, Andrei Alexandrescu wrote:
On 5/19/15 11:05 AM, Marco Leise wrote:
While you are at it, you might also need "round pointer up to"
and "round pointer down to", which can be implemented with bit
ops for power-of-2 multiples.

Yah, there are plenty of those in
https://github.com/andralex/phobos/blob/allocator/std/experimental/allocator/common.d.
Improvements welcome. -- Andrei

In case the range of s is such that divideRoundUp is actually good enough, the following avoids the conditional:

size_t roundUpToMultipleOf(size_t s,uint base){
    auto t=s+base-1;
    return t-t%base;
}

However, both divideRoundUp and this implementation of roundUpToMultipleOf do not work for s in [size_t.max-base+2, size_t.max].

Reply via email to