include/Zycore/Defines.h(3)

NAME
include/Zycore/Defines.h

SYNOPSIS

#include <assert.h>

  Macros

#define ZYAN_MACRO_CONCAT(x, y)
#define ZYAN_MACRO_CONCAT_EXPAND(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)
#define ZYAN_STATIC_ASSERT(x)
#define ZYAN_UNREACHABLE for(;;)
#define ZYAN_UNUSED(x)
#define ZYAN_FALLTHROUGH
#define ZYAN_BITFIELD(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)
#define ZYAN_MIN(a, b)
#define ZYAN_MAX(a, b)
#define ZYAN_ABS(a)
#define ZYAN_IS_POWER_OF_2(x)
#define ZYAN_IS_ALIGNED_TO(x, align)
#define ZYAN_ALIGN_UP(x, align)
#define ZYAN_ALIGN_DOWN(x, align)
#define ZYAN_DIV64(n, divisor)
#define ZYAN_NEEDS_BIT(n, b)
#define ZYAN_BITS_TO_REPRESENT(n)

Detailed Description

General helper and platform detection macros.

Macro Definition Documentation

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

Returns the absolute value of a.

Parameters
    a The value.

Returns
    The absolute value of a.

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

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

Parameters
    x The value.
    align The desired alignment.

Returns
    The aligned value.

Note that this macro only works for powers of 2.

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

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

Parameters
    x The value.
    align The desired alignment.

Returns
    The aligned value.

Note that this macro only works for powers of 2.

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

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

Parameters
    a The name of the array.

Returns
    The number of elements of the given array.

  #define ZYAN_ASSERT( condition)
Value:
assert(condition)

Runtime debug assertion.

  #define ZYAN_BITFIELD( x)
Value:
: x

Declares a bitfield.

Parameters
    x The size (in bits) of the bitfield.

  #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)   \
    )

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

Divide the 64bit integer value by the given divisor.

Parameters
    n Variable containing the dividend that will be updated with the result of the division.
    divisor The divisor.

  #define ZYAN_FALLTHROUGH
Intentional fallthrough.

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

Checks, if the given value is properly aligned.

Note that this macro only works for powers of 2.

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

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

Parameters
    x The 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.

  #define ZYAN_MACRO_CONCAT( x, y)
Value:
x ## y

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

Parameters
    x The first value.
    y The second value.

Returns
    The combined string of the given values.

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

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

Parameters
    x The first value.
    y The second value.

Returns
    The combined string of the given values.

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

Returns the bigger value of a or b.

Parameters
    a The first value.
    b The second value.

Returns
    The bigger value of a or b.

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

Returns the smaller value of a or b.

Parameters
    a The first value.
    b The second value.

Returns
    The smaller value of a or b.

  #define ZYAN_NEEDS_BIT( n, b)
Value:
(((unsigned long)(n) >> (b)) > 0)

  #define ZYAN_PRINTF_ATTR( format_index, first_to_check)
Decorator for printf-style functions.

Parameters
    format_index The 1-based index of the format string parameter.
    first_to_check The 1-based index of the format arguments parameter.

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

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

Compiler-time assertion.

  #define ZYAN_UNREACHABLE for(;;)
Marks the current code path as unreachable.

  #define ZYAN_UNUSED( x)
Value:
(void)(x)

Marks the specified parameter as unused.

Parameters
    x The name of the unused parameter.

  #define ZYAN_WPRINTF_ATTR( format_index, first_to_check)
Decorator for wprintf-style functions.

Parameters
    format_index The 1-based index of the format string parameter.
    first_to_check The 1-based index of the format arguments parameter.

  #define ZYCORE_EXPORT ZYAN_DLLIMPORT
Symbol is exported in shared library builds.

  #define ZYCORE_NO_EXPORT
Symbol is not exported and for internal use only.

Author

Generated automatically by Doxygen for Zycore from the source code.