6static inline size_t cu_next_pow2(
size_t x) {
16#if SIZE_MAX > UINT32_MAX
27static inline cu_Layout cu_Layout_create(
size_t elem_size,
size_t alignment) {
29 if (elem_size == 0 || alignment == 0) {
33 layout.elem_size = elem_size;
34 layout.alignment = alignment;
38#define CU_LAYOUT(T) cu_Layout_create(sizeof(T), _Alignof(T))
39#define CU_LAYOUT_CHECK(layout) \
40 if ((layout).elem_size == 0 || (layout).alignment == 0)
42#define CU_TIME_NS_PER_SEC 1000000000ULL
44#define CU_TIME_WINDOWS_TICKS_PER_SEC 10000000ULL
45#define CU_TIME_WINDOWS_EPOCH_DIFF 116444736000000000ULL
46#define CU_TIME_WINDOWS_TICK_NS 100ULL
48long long cu_Time_filetime_to_unix(FILETIME ft);
49FILETIME cu_Time_unix_to_filetime(
long long ns);