Zycore 1.5.1.0
Loading...
Searching...
No Matches
Macros
Defines.h File Reference
#include <assert.h>
Include dependency graph for Defines.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ZYAN_MACRO_CONCAT(x, y)   x ## y
 
#define ZYAN_MACRO_CONCAT_EXPAND(x, y)   ZYAN_MACRO_CONCAT(x, y)
 
#define ZYAN_UNKNOWN_COMPILER
 
#define ZYAN_UNKNOWN_PLATFORM
 
#define ZYAN_USER
 
#define ZYAN_RELEASE
 
#define ZYAN_DEPRECATED
 
#define ZYAN_DLLEXPORT
 
#define ZYAN_DLLIMPORT
 
#define ZYCORE_EXPORT   ZYAN_DLLIMPORT
 
#define ZYCORE_NO_EXPORT
 
#define ZYAN_NO_SANITIZE(what)
 
#define ZYAN_INLINE   static inline
 
#define ZYAN_NOINLINE
 
#define ZYAN_ASSERT(condition)   assert(condition)
 
#define ZYAN_STATIC_ASSERT(x)    typedef int ZYAN_MACRO_CONCAT_EXPAND(ZYAN_SASSERT_, __COUNTER__) [(x) ? 1 : -1]
 
#define ZYAN_UNREACHABLE   for(;;)
 
#define ZYAN_UNUSED(x)   (void)(x)
 
#define ZYAN_FALLTHROUGH
 
#define ZYAN_BITFIELD(x)   : x
 
#define ZYAN_REQUIRES_LIBC
 
#define ZYAN_PRINTF_ATTR(format_index, first_to_check)
 
#define ZYAN_WPRINTF_ATTR(format_index, first_to_check)
 
#define ZYAN_ARRAY_LENGTH(a)   (sizeof(a) / sizeof((a)[0]))
 
#define ZYAN_MIN(a, b)   (((a) < (b)) ? (a) : (b))
 
#define ZYAN_MAX(a, b)   (((a) > (b)) ? (a) : (b))
 
#define ZYAN_ABS(a)   (((a) < 0) ? -(a) : (a))
 
#define ZYAN_IS_POWER_OF_2(x)   (((x) & ((x) - 1)) == 0)
 
#define ZYAN_IS_ALIGNED_TO(x, align)   (((x) & ((align) - 1)) == 0)
 
#define ZYAN_ALIGN_UP(x, align)   (((x) + (align) - 1) & ~((align) - 1))
 
#define ZYAN_ALIGN_DOWN(x, align)   (((x) - 1) & ~((align) - 1))
 
#define ZYAN_DIV64(n, divisor)   (n /= divisor)
 
#define ZYAN_NEEDS_BIT(n, b)   (((unsigned long)(n) >> (b)) > 0)
 
#define ZYAN_BITS_TO_REPRESENT(n)
 

Detailed Description

General helper and platform detection macros.

Macro Definition Documentation

◆ ZYAN_ABS

#define ZYAN_ABS (   a)    (((a) < 0) ? -(a) : (a))

Returns the absolute value of a.

Parameters
aThe value.
Returns
The absolute value of a.

◆ ZYAN_ALIGN_DOWN

#define ZYAN_ALIGN_DOWN (   x,
  align 
)    (((x) - 1) & ~((align) - 1))

Aligns the value to the nearest given alignment boundary (by rounding it down).

Parameters
xThe value.
alignThe desired alignment.
Returns
The aligned value.

Note that this macro only works for powers of 2.

◆ ZYAN_ALIGN_UP

#define ZYAN_ALIGN_UP (   x,
  align 
)    (((x) + (align) - 1) & ~((align) - 1))

Aligns the value to the nearest given alignment boundary (by rounding it up).

Parameters
xThe value.
alignThe desired alignment.
Returns
The aligned value.

Note that this macro only works for powers of 2.

◆ ZYAN_ARRAY_LENGTH

#define ZYAN_ARRAY_LENGTH (   a)    (sizeof(a) / sizeof((a)[0]))

Returns the length (number of elements) of an array.

Parameters
aThe name of the array.
Returns
The number of elements of the given array.

◆ ZYAN_ASSERT

#define ZYAN_ASSERT (   condition)    assert(condition)

Runtime debug assertion.

◆ ZYAN_BITFIELD

#define ZYAN_BITFIELD (   x)    : x

Declares a bitfield.

Parameters
xThe size (in bits) of the bitfield.

◆ ZYAN_BITS_TO_REPRESENT

#define ZYAN_BITS_TO_REPRESENT (   n)
Value:
( \
ZYAN_NEEDS_BIT(n, 0) + ZYAN_NEEDS_BIT(n, 1) + \
ZYAN_NEEDS_BIT(n, 2) + ZYAN_NEEDS_BIT(n, 3) + \
ZYAN_NEEDS_BIT(n, 4) + ZYAN_NEEDS_BIT(n, 5) + \
ZYAN_NEEDS_BIT(n, 6) + ZYAN_NEEDS_BIT(n, 7) + \
ZYAN_NEEDS_BIT(n, 8) + ZYAN_NEEDS_BIT(n, 9) + \
ZYAN_NEEDS_BIT(n, 10) + ZYAN_NEEDS_BIT(n, 11) + \
ZYAN_NEEDS_BIT(n, 12) + ZYAN_NEEDS_BIT(n, 13) + \
ZYAN_NEEDS_BIT(n, 14) + ZYAN_NEEDS_BIT(n, 15) + \
ZYAN_NEEDS_BIT(n, 16) + ZYAN_NEEDS_BIT(n, 17) + \
ZYAN_NEEDS_BIT(n, 18) + ZYAN_NEEDS_BIT(n, 19) + \
ZYAN_NEEDS_BIT(n, 20) + ZYAN_NEEDS_BIT(n, 21) + \
ZYAN_NEEDS_BIT(n, 22) + ZYAN_NEEDS_BIT(n, 23) + \
ZYAN_NEEDS_BIT(n, 24) + ZYAN_NEEDS_BIT(n, 25) + \
ZYAN_NEEDS_BIT(n, 26) + ZYAN_NEEDS_BIT(n, 27) + \
ZYAN_NEEDS_BIT(n, 28) + ZYAN_NEEDS_BIT(n, 29) + \
ZYAN_NEEDS_BIT(n, 30) + ZYAN_NEEDS_BIT(n, 31) \
)

◆ ZYAN_DIV64

#define ZYAN_DIV64 (   n,
  divisor 
)    (n /= divisor)

Divide the 64bit integer value by the given divisor.

Parameters
nVariable containing the dividend that will be updated with the result of the division.
divisorThe divisor.

◆ ZYAN_FALLTHROUGH

#define ZYAN_FALLTHROUGH

Intentional fallthrough.

◆ ZYAN_IS_ALIGNED_TO

#define ZYAN_IS_ALIGNED_TO (   x,
  align 
)    (((x) & ((align) - 1)) == 0)

Checks, if the given value is properly aligned.

Note that this macro only works for powers of 2.

◆ ZYAN_IS_POWER_OF_2

#define ZYAN_IS_POWER_OF_2 (   x)    (((x) & ((x) - 1)) == 0)

Checks, if the given value is a power of 2.

Parameters
xThe value.
Returns
ZYAN_TRUE, if the given value is a power of 2 or ZYAN_FALSE, if not.

Note that this macro always returns ZYAN_TRUE for x == 0.

◆ ZYAN_MACRO_CONCAT

#define ZYAN_MACRO_CONCAT (   x,
 
)    x ## y

Concatenates two values using the stringify operator (##).

Parameters
xThe first value.
yThe second value.
Returns
The combined string of the given values.

◆ ZYAN_MACRO_CONCAT_EXPAND

#define ZYAN_MACRO_CONCAT_EXPAND (   x,
 
)    ZYAN_MACRO_CONCAT(x, y)

Concatenates two values using the stringify operator (##) and expands the value to be used in another macro.

Parameters
xThe first value.
yThe second value.
Returns
The combined string of the given values.

◆ ZYAN_MAX

#define ZYAN_MAX (   a,
 
)    (((a) > (b)) ? (a) : (b))

Returns the bigger value of a or b.

Parameters
aThe first value.
bThe second value.
Returns
The bigger value of a or b.

◆ ZYAN_MIN

#define ZYAN_MIN (   a,
 
)    (((a) < (b)) ? (a) : (b))

Returns the smaller value of a or b.

Parameters
aThe first value.
bThe second value.
Returns
The smaller value of a or b.

◆ ZYAN_PRINTF_ATTR

#define ZYAN_PRINTF_ATTR (   format_index,
  first_to_check 
)

Decorator for printf-style functions.

Parameters
format_indexThe 1-based index of the format string parameter.
first_to_checkThe 1-based index of the format arguments parameter.

◆ ZYAN_REQUIRES_LIBC

#define ZYAN_REQUIRES_LIBC

Marks functions that require libc (cannot be used with ZYAN_NO_LIBC).

◆ ZYAN_STATIC_ASSERT

#define ZYAN_STATIC_ASSERT (   x)     typedef int ZYAN_MACRO_CONCAT_EXPAND(ZYAN_SASSERT_, __COUNTER__) [(x) ? 1 : -1]

Compiler-time assertion.

◆ ZYAN_UNREACHABLE

#define ZYAN_UNREACHABLE   for(;;)

Marks the current code path as unreachable.

◆ ZYAN_UNUSED

#define ZYAN_UNUSED (   x)    (void)(x)

Marks the specified parameter as unused.

Parameters
xThe name of the unused parameter.

◆ ZYAN_WPRINTF_ATTR

#define ZYAN_WPRINTF_ATTR (   format_index,
  first_to_check 
)

Decorator for wprintf-style functions.

Parameters
format_indexThe 1-based index of the format string parameter.
first_to_checkThe 1-based index of the format arguments parameter.

◆ ZYCORE_EXPORT

#define ZYCORE_EXPORT   ZYAN_DLLIMPORT

Symbol is exported in shared library builds.

◆ ZYCORE_NO_EXPORT

#define ZYCORE_NO_EXPORT

Symbol is not exported and for internal use only.