22 lines
621 B
C
22 lines
621 B
C
#ifndef COMPILER_H
|
|
#define COMPILER_H
|
|
|
|
#define __unused __attribute__((unused))
|
|
|
|
#define COUNT_OF(arr) (sizeof(arr) / sizeof((arr)[0]))
|
|
|
|
#define STATIC_ARRAY_FOREACH(arr, ptr) \
|
|
for ((ptr) = (arr); (ptr) < (arr) + COUNT_OF(arr); (ptr)++)
|
|
|
|
#define STRX(x) #x
|
|
#define STR(x) STRX(x)
|
|
|
|
#define HAS_FLAG(flags, flag) ((flags) & (flag))
|
|
#define SET_FLAG(flags, flag) ((flags) |= (flag))
|
|
#define CLEAR_FLAG(flags, flag) ((flags) &= ~(flag))
|
|
#define TOGGLE_FLAG(flags, flag) ((flags) ^= (flag))
|
|
|
|
#define FOREACH_SECTION(item, type, section) \
|
|
for (type *item = __start_##section; item < __stop_##section; ++item)
|
|
|
|
#endif
|