// vim:fileencoding=utf-8:foldmethod=marker #ifndef MISC_UTILS_H #define MISC_UTILS_H #include "../aliases/aliases.h" #define KB(SIZE) (SIZE * 1024ull) #define MB(SIZE) (KB(SIZE) * 1024) #define GB(SIZE) (MB(SIZE) * 1024) #define TB(SIZE) (GB(SIZE) * 1024) #define wapp_misc_utils_padding_size(SIZE) u8 reserved_padding[sizeof(void *) - ((SIZE) % sizeof(void *))] #define U64_RSHIFT_OR_1(X) (((u64)X) | (((u64)X) >> 1)) #define U64_RSHIFT_OR_2(X) (((u64)X) | (((u64)X) >> 2)) #define U64_RSHIFT_OR_4(X) (((u64)X) | (((u64)X) >> 4)) #define U64_RSHIFT_OR_8(X) (((u64)X) | (((u64)X) >> 8)) #define U64_RSHIFT_OR_16(X) (((u64)X) | (((u64)X) >> 16)) #define U64_RSHIFT_OR_32(X) (((u64)X) | (((u64)X) >> 32)) #define wapp_misc_utils_u64_round_up_pow2(X) ( \ ( \ U64_RSHIFT_OR_32( \ U64_RSHIFT_OR_16( \ U64_RSHIFT_OR_8( \ U64_RSHIFT_OR_4( \ U64_RSHIFT_OR_2( \ U64_RSHIFT_OR_1(X - 1) \ ) \ ) \ ) \ ) \ ) \ ) + 1 \ ) #define wapp_misc_utils_va_args_count(T, ...) (sizeof((T[]){__VA_ARGS__})/sizeof(T)) #endif // !MISC_UTILS_H