/* Zeta API - Z/inspection/compiler/completion.h
 ______ ____________  ___
|__   /|  ___|__  __|/   \
  /  /_|  __|  |  | /  *  \
 /_____|_____| |__|/__/ \__\
Copyright (C) 2006-2022 Manuel Sainz de Baranda y Goñi.
Copyright (C) 2018 Sofía Ortega Sosa.
Released under the terms of the GNU Lesser General Public License v3. */

#ifndef Z_inspection_compiler_completion_H
#define Z_inspection_compiler_completion_H

/* MARK: - Attributes */

#ifdef Z_COMPILER_ATTRIBUTE_ALIAS
#	define Z_COMPILER_HAS_ATTRIBUTE_ALIAS TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_API_ALIAS
#	define Z_COMPILER_HAS_ATTRIBUTE_API_ALIAS TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_API_EXPORT
#	define Z_COMPILER_HAS_ATTRIBUTE_API_EXPORT TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_API_IMPORT
#	define Z_COMPILER_HAS_ATTRIBUTE_API_IMPORT TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_API_EXPORT_ALIAS
#	define Z_COMPILER_HAS_ATTRIBUTE_API_EXPORT_ALIAS TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_API_WEAK_EXPORT
#	define Z_COMPILER_HAS_ATTRIBUTE_API_WEAK_EXPORT TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_EBCO
#	define Z_COMPILER_HAS_ATTRIBUTE_EBCO TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_INLINE
#	define Z_COMPILER_HAS_ATTRIBUTE_INLINE TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_MICROSOFT_STD_CALL
#	define Z_COMPILER_HAS_ATTRIBUTE_MICROSOFT_STD_CALL TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_NO_RETURN
#	define Z_COMPILER_HAS_ATTRIBUTE_NO_RETURN TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_NULL_TERMINATED
#	define Z_COMPILER_HAS_ATTRIBUTE_NULL_TERMINATED TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_PRIVATE
#	define Z_COMPILER_HAS_ATTRIBUTE_PRIVATE TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_PUBLIC
#	define Z_COMPILER_HAS_ATTRIBUTE_PUBLIC TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_THREAD_LOCAL
#	define Z_COMPILER_HAS_ATTRIBUTE_THREAD_LOCAL TRUE
#endif

#ifdef Z_COMPILER_ATTRIBUTE_WEAK
#	define Z_COMPILER_HAS_ATTRIBUTE_WEAK TRUE
#endif

/* MARK: - Built-in constants */

#ifdef Z_COMPILER_CONSTANT_FLOAT16_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT16_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT16_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT16_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT32_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT32_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT32_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT32_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT64_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT64_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT64_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT64_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT128_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT128_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT128_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT128_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT80_X87_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT80_X87_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT80_X87_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT80_X87_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT96_X87_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT96_X87_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT96_X87_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT96_X87_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT128_X87_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT128_X87_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT128_X87_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT128_X87_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_CHAR_BITS
#	define Z_COMPILER_HAS_CONSTANT_CHAR_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UCHAR_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_UCHAR_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SCHAR_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SCHAR_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SCHAR_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SCHAR_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SHORT_BITS
#	define Z_COMPILER_HAS_CONSTANT_SHORT_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SHORT_SIZE
#	define Z_COMPILER_HAS_CONSTANT_SHORT_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_USHORT_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_USHORT_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SSHORT_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SSHORT_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SSHORT_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SSHORT_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_INT_BITS
#	define Z_COMPILER_HAS_CONSTANT_INT_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_INT_SIZE
#	define Z_COMPILER_HAS_CONSTANT_INT_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UINT_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_UINT_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINT_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINT_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINT_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINT_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LONG_BITS
#	define Z_COMPILER_HAS_CONSTANT_LONG_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LONG_SIZE
#	define Z_COMPILER_HAS_CONSTANT_LONG_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_ULONG_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_ULONG_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SLONG_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SLONG_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SLONG_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SLONG_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LLONG_BITS
#	define Z_COMPILER_HAS_CONSTANT_LLONG_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LLONG_SIZE
#	define Z_COMPILER_HAS_CONSTANT_LLONG_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_ULLONG_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_ULLONG_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SLLONG_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SLLONG_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SLLONG_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SLLONG_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT_BITS
#	define Z_COMPILER_HAS_CONSTANT_FLOAT_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT_SIZE
#	define Z_COMPILER_HAS_CONSTANT_FLOAT_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_FLOAT_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_FLOAT_NAN
#	define Z_COMPILER_HAS_CONSTANT_FLOAT_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_DOUBLE_BITS
#	define Z_COMPILER_HAS_CONSTANT_DOUBLE_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_DOUBLE_SIZE
#	define Z_COMPILER_HAS_CONSTANT_DOUBLE_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_DOUBLE_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_DOUBLE_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_DOUBLE_NAN
#	define Z_COMPILER_HAS_CONSTANT_DOUBLE_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LDOUBLE_BITS
#	define Z_COMPILER_HAS_CONSTANT_LDOUBLE_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LDOUBLE_SIZE
#	define Z_COMPILER_HAS_CONSTANT_LDOUBLE_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LDOUBLE_INFINITY
#	define Z_COMPILER_HAS_CONSTANT_LDOUBLE_INFINITY TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_LDOUBLE_NAN
#	define Z_COMPILER_HAS_CONSTANT_LDOUBLE_NAN TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_WCHAR_BITS
#	define Z_COMPILER_HAS_CONSTANT_WCHAR_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_WCHAR_SIZE
#	define Z_COMPILER_HAS_CONSTANT_WCHAR_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_WCHAR_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_WCHAR_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SIZE_BITS
#	define Z_COMPILER_HAS_CONSTANT_SIZE_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SIZE_SIZE
#	define Z_COMPILER_HAS_CONSTANT_SIZE_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_USIZE_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_USIZE_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SSIZE_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SSIZE_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SSIZE_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SSIZE_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UINTMAX_BITS
#	define Z_COMPILER_HAS_CONSTANT_UINTMAX_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UINTMAX_SIZE
#	define Z_COMPILER_HAS_CONSTANT_UINTMAX_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UINTMAX_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_UINTMAX_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTMAX_BITS
#	define Z_COMPILER_HAS_CONSTANT_SINTMAX_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTMAX_SIZE
#	define Z_COMPILER_HAS_CONSTANT_SINTMAX_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTMAX_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINTMAX_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTMAX_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINTMAX_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_INTPTR_BITS
#	define Z_COMPILER_HAS_CONSTANT_INTPTR_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_INTPTR_SIZE
#	define Z_COMPILER_HAS_CONSTANT_INTPTR_SIZE TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_UINTPTR_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_UINTPTR_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTPTR_MINIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINTPTR_MINIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_SINTPTR_MAXIMUM
#	define Z_COMPILER_HAS_CONSTANT_SINTPTR_MAXIMUM TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_POINTER_BITS
#	define Z_COMPILER_HAS_CONSTANT_POINTER_BITS TRUE
#endif

#ifdef Z_COMPILER_CONSTANT_POINTER_SIZE
#	define Z_COMPILER_HAS_CONSTANT_POINTER_SIZE TRUE
#endif

/* MARK: - Built-in magic constants */

#ifdef Z_COMPILER_MAGIC_CONSTANT_MANGLED_FUNCTION_NAME
#	define Z_COMPILER_HAS_MAGIC_CONSTANT_MANGLED_FUNCTION_NAME TRUE
#endif

/* MARK: - Built-in macros: Struture */

#ifdef Z_COMPILER_MACRO_MEMBER_OFFSET
#	define Z_COMPILER_HAS_MACRO_MEMBER_OFFSET TRUE
#endif

/* MARK: - Built-in macros: VAL */

#ifdef Z_COMPILER_MACRO_VAL_INITIALIZE
#	define Z_COMPILER_HAS_MACRO_VAL_INITIALIZE TRUE
#endif

#ifdef Z_COMPILER_MACRO_VAL_FINALIZE
#	define Z_COMPILER_HAS_MACRO_VAL_FINALIZE TRUE
#endif

#ifdef Z_COMPILER_MACRO_VAL_READ
#	define Z_COMPILER_HAS_MACRO_VAL_READ TRUE
#endif

#ifdef Z_COMPILER_MACRO_VAL_COPY
#	define Z_COMPILER_HAS_MACRO_VAL_COPY TRUE
#endif

/* MARK: - Built-in types */

#ifdef Z_COMPILER_TYPE_UINT8
#	define Z_COMPILER_HAS_TYPE_UINT8 TRUE
#endif

#ifdef Z_COMPILER_TYPE_SINT8
#	define Z_COMPILER_HAS_TYPE_SINT8 TRUE
#endif

#ifdef Z_COMPILER_TYPE_UINT16
#	define Z_COMPILER_HAS_TYPE_UINT16 TRUE
#endif

#ifdef Z_COMPILER_TYPE_SINT16
#	define Z_COMPILER_HAS_TYPE_SINT16 TRUE
#endif

#ifdef Z_COMPILER_TYPE_UINT32
#	define Z_COMPILER_HAS_TYPE_UINT32 TRUE
#endif

#ifdef Z_COMPILER_TYPE_SINT32
#	define Z_COMPILER_HAS_TYPE_SINT32 TRUE
#endif

#ifdef Z_COMPILER_TYPE_UINT64
#	define Z_COMPILER_HAS_TYPE_UINT64 TRUE
#endif

#ifdef Z_COMPILER_TYPE_SINT64
#	define Z_COMPILER_HAS_TYPE_SINT64 TRUE
#endif

#ifdef Z_COMPILER_TYPE_UINT128
#	define Z_COMPILER_HAS_TYPE_UINT128 TRUE
#endif

#ifdef Z_COMPILER_TYPE_SINT128
#	define Z_COMPILER_HAS_TYPE_SINT128 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT16
#	define Z_COMPILER_HAS_TYPE_FLOAT16 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT32
#	define Z_COMPILER_HAS_TYPE_FLOAT32 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT64
#	define Z_COMPILER_HAS_TYPE_FLOAT64 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT128
#	define Z_COMPILER_HAS_TYPE_FLOAT128 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT80_X87
#	define Z_COMPILER_HAS_TYPE_FLOAT80_X87 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT96_X87
#	define Z_COMPILER_HAS_TYPE_FLOAT96_X87 TRUE
#endif

#ifdef Z_COMPILER_TYPE_FLOAT128_X87
#	define Z_COMPILER_HAS_TYPE_FLOAT128_X87 TRUE
#endif

#ifdef Z_COMPILER_TYPE_VAL
#	define Z_COMPILER_HAS_TYPE_VAL TRUE
#endif

/* MARK: - Suffix macros for built-in types */

#ifdef Z_COMPILER_LITERAL_UINT8
#	define Z_COMPILER_HAS_LITERAL_UINT8 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_SINT8
#	define Z_COMPILER_HAS_LITERAL_SINT8 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_UINT16
#	define Z_COMPILER_HAS_LITERAL_UINT16 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_SINT16
#	define Z_COMPILER_HAS_LITERAL_SINT16 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_UINT32
#	define Z_COMPILER_HAS_LITERAL_UINT32 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_SINT32
#	define Z_COMPILER_HAS_LITERAL_SINT32 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_UINT64
#	define Z_COMPILER_HAS_LITERAL_UINT64 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_SINT64
#	define Z_COMPILER_HAS_LITERAL_SINT64 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_UINT128
#	define Z_COMPILER_HAS_LITERAL_UINT128 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_SINT128
#	define Z_COMPILER_HAS_LITERAL_SINT128 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT16
#	define Z_COMPILER_HAS_LITERAL_FLOAT16 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT32
#	define Z_COMPILER_HAS_LITERAL_FLOAT32 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT64
#	define Z_COMPILER_HAS_LITERAL_FLOAT64 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT128
#	define Z_COMPILER_HAS_LITERAL_FLOAT128 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT80_X87
#	define Z_COMPILER_HAS_LITERAL_FLOAT80_X87 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT96_X87
#	define Z_COMPILER_HAS_LITERAL_FLOAT96_X87 TRUE
#endif

#ifdef Z_COMPILER_LITERAL_FLOAT128_X87
#	define Z_COMPILER_HAS_LITERAL_FLOAT128_X87 TRUE
#endif

/* MARK: - Complete implementations */

#ifndef Z_COMPILER_HAS_VAL
#	if	Z_COMPILER_HAS_TYPE_VAL		    && \
		Z_COMPILER_HAS_MACRO_VAL_INITIALIZE && \
		Z_COMPILER_HAS_MACRO_VAL_FINALIZE   && \
		Z_COMPILER_HAS_MACRO_VAL_READ

#		define Z_COMPILER_HAS_VAL TRUE
#	else
#		define Z_COMPILER_HAS_VAL FALSE
#	endif
#endif












































/* De aquí hasta el final está comprobado y OK */

/* MARK: - Built-ins: Functions */

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT8_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT8_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT8_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT8_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT16_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT16_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT16_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT16_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT32_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT32_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT32_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT32_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT64_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT64_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT64_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT64_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_UINT128_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_UINT128_ATOMIC_XOR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_ADD_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_ADD_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_AND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_AND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_ADD
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_ADD TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_AND
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_AND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_NAND
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_NAND TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_OR
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_OR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_SUBTRACT
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_SUBTRACT TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_GET_AND_XOR
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_GET_AND_XOR TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_NAND_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_NAND_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_OR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_OR_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_SET_IF_EQUAL
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_SET_IF_EQUAL TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_SUBTRACT_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_SUBTRACT_AND_GET TRUE
#endif

#ifdef Z_COMPILER_FUNCTION_SINT128_ATOMIC_XOR_AND_GET
#	define Z_COMPILER_HAS_FUNCTION_SINT128_ATOMIC_XOR_AND_GET TRUE
#endif

/* MARK: - Built-ins: Traits */

#ifdef Z_COMPILER_TRAIT_SELECT_TYPE
#	define Z_COMPILER_HAS_TRAIT_SELECT_TYPE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_DIMENSION_COUNT
#	define Z_COMPILER_HAS_TRAIT_TYPE_DIMENSION_COUNT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_ELEMENT_COUNT
#	define Z_COMPILER_HAS_TRAIT_TYPE_ELEMENT_COUNT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_HAS_UNIQUE_OBJECT_REPRESENTATIONS
#	define Z_COMPILER_HAS_TRAIT_TYPE_HAS_UNIQUE_OBJECT_REPRESENTATIONS TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_HAS_TRIVIAL_DESTRUCTOR
#	define Z_COMPILER_HAS_TRAIT_TYPE_HAS_TRIVIAL_DESTRUCTOR TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_HAS_VIRTUAL_DESTRUCTOR
#	define Z_COMPILER_HAS_TRAIT_TYPE_HAS_VIRTUAL_DESTRUCTOR TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_ABSTRACT
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_ABSTRACT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_AGGREGATE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_AGGREGATE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_ARITHMETIC
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_ARITHMETIC TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_ARRAY
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_ARRAY TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_BASE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_BASE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_COMPLETE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_COMPLETE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_COMPOUND
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_COMPOUND TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_CONST
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_CONST TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_CONVERTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_CONVERTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_DATA_MEMBER_POINTER
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_DATA_MEMBER_POINTER TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_DESTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_DESTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_EMPTY
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_EMPTY TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_ENUMERATION
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_ENUMERATION TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_FINAL
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_FINAL TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_INTEGRAL
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_INTEGRAL TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_INTERFACE_CLASS
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_INTERFACE_CLASS TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_FLOATING_POINT
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_FLOATING_POINT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_FUNCTION
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_FUNCTION TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_FUNDAMENTAL
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_FUNDAMENTAL TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_LITERAL
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_LITERAL TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_LVALUE_REFERENCE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_LVALUE_REFERENCE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_MEMBER_FUNCTION_POINTER
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_MEMBER_FUNCTION_POINTER TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_MEMBER_POINTER
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_MEMBER_POINTER TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_COPY_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_COPY_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_COPY_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_COPY_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_DESTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_DESTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_NOTHROW_MOVE_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_NOTHROW_MOVE_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_OBJECT
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_OBJECT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_POD
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_POD TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_POINTER
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_POINTER TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_POLYMORPHIC
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_POLYMORPHIC TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_REFERENCE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_REFERENCE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_RVALUE_REFERENCE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_RVALUE_REFERENCE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_SAME
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_SAME TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_SCALAR
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_SCALAR TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_SEALED
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_SEALED TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_SIGNED
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_SIGNED TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_STD_LAYOUT
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_STD_LAYOUT TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_STRUCTURE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_STRUCTURE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIAL
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIAL TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPY_ASSIGNABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_COPY_ASSIGNABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_COPYABLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_COPYABLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_TRIVIALLY_DESTRUCTIBLE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_TRIVIALLY_DESTRUCTIBLE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_UNION
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_UNION TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_UNSIGNED
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_UNSIGNED TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_VOID
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_VOID TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_IS_VOLATILE
#	define Z_COMPILER_HAS_TRAIT_TYPE_IS_VOLATILE TRUE
#endif

#ifdef Z_COMPILER_TRAIT_TYPE_UNDERLYING_TYPE
#	define Z_COMPILER_HAS_TRAIT_TYPE_UNDERLYING_TYPE TRUE
#endif

#endif /* Z_inspection_compiler_completion_H */
