Luna/luna/Alignment.h

22 lines
551 B
C
Raw Normal View History

#pragma once
template <typename T> constexpr T is_aligned(T value, T align_base)
{
return (value % align_base == 0);
}
template <typename T> constexpr T align_down(T value, T align_base)
{
return value - (value % align_base);
}
template <typename T> constexpr T align_up(T value, T align_base)
{
if (is_aligned(value, align_base)) return value;
return align_down(value, align_base) + align_base;
}
template <typename T> constexpr T get_blocks_from_size(T value, T block_size)
{
return (value + (block_size - 1)) / block_size;
}