27#ifndef INCLUDED_CODE_ANNOTATION
28#define INCLUDED_CODE_ANNOTATION
51#if HAVE_C99 && GCC_VERSION
52# define UNUSED2(param) _Pragma("unused " #param)
56# define UNUSED2(param) do{ if(¶m) {} } while(false)
58# define UNUSED2(param) ((void)(param))
83# define NOTHROW_DECLARE __attribute__((nothrow))
84# define NOTHROW_DEFINE
86# define NOTHROW_DECLARE __attribute__((nothrow))
87# define NOTHROW_DEFINE
92# define NOTHROW_DECLARE __declspec(nothrow)
93# define NOTHROW_DEFINE __declspec(nothrow)
97# define NOTHROW_DECLARE
98# define NOTHROW_DEFINE
106#if __has_feature(attribute_analyzer_noreturn)
107# define ANALYZER_NORETURN __attribute__((analyzer_noreturn))
109# define ANALYZER_NORETURN
144#define HAVE_ASSUME_UNREACHABLE 1
145#if MSC_VERSION && !ICC_VERSION
146# define ASSUME_UNREACHABLE __assume(0)
148# define ASSUME_UNREACHABLE __builtin_unreachable()
150# define ASSUME_UNREACHABLE
151# undef HAVE_ASSUME_UNREACHABLE
152# define HAVE_ASSUME_UNREACHABLE 0
158#if HAVE_ASSUME_UNREACHABLE && !CONFIG_ENABLE_CHECKS
159# define UNREACHABLE ASSUME_UNREACHABLE
167 DEBUG_WARN_ERR(ERR::LOGIC); \
183#define NODEFAULT default: UNREACHABLE
191#define PASTE3_HIDDEN__(a, b, c) a ## b ## c
192#define PASTE3__(a, b, c) PASTE3_HIDDEN__(a, b, c)
193#define UID__ PASTE3__(LINE_, __LINE__, _)
194#define UID2__ PASTE3__(LINE_, __LINE__, _2)
209#define cassert(expr) static_assert((expr), #expr)
229#define NONCOPYABLE(className) \
230 className(const className&) = delete; \
231 className& operator=(const className&) = delete
237#define MOVABLE(className) \
238 className(className&&) = default; \
239 className& operator=(className&&) = default
242# define ASSUME_ALIGNED(ptr, multiple) __assume_aligned(ptr, multiple)
244# define ASSUME_ALIGNED(ptr, multiple)
252# define PRINTF_ARGS(fmtpos) __attribute__ ((format (printf, fmtpos, fmtpos+1)))
253# define VPRINTF_ARGS(fmtpos) __attribute__ ((format (printf, fmtpos, 0)))
254# define WPRINTF_ARGS(fmtpos)
255# define VWPRINTF_ARGS(fmtpos)
257# define PRINTF_ARGS(fmtpos)
258# define VPRINTF_ARGS(fmtpos)
259# define WPRINTF_ARGS(fmtpos)
260# define VWPRINTF_ARGS(fmtpos)
266# define SENTINEL_ARG __attribute__ ((sentinel))
275# define COMPILER_FENCE __memory_barrier()
278# pragma intrinsic(_ReadWriteBarrier)
279# define COMPILER_FENCE _ReadWriteBarrier()
281# define COMPILER_FENCE asm volatile("" : : : "memory")
283# define COMPILER_FENCE
293# define _W64 __attribute__((mode (__pointer__)))
321# define RESTRICT __restrict__
324# define RESTRICT __restrict
331# error ICC_VERSION defined without either GCC_VERSION or an adequate MSC_VERSION
350#define ARRAY_SIZE(name) (sizeof(*ArraySizeDeducer(name)))
359# define __func__ __FUNCTION__
362# define __func__ "(unknown)"
367#if defined(__cplusplus)
368# define EXTERN_C extern "C"
370# define EXTERN_C extern
375# define INLINE __forceinline
377# define INLINE inline
382# define CALL_CONV __cdecl
388#if MSC_VERSION && !ARCH_AMD64
389# define DECORATED_NAME(name) _##name
391# define DECORATED_NAME(name) name
397#define STRINGIZE2(id) # id
398#define STRINGIZE(id) STRINGIZE2(id)
403#define WIDEN2(x) L ## x
404#define WIDEN(x) WIDEN2(x)
407#if __has_cpp_attribute(fallthrough) || defined(__cplusplus) && __cplusplus >= 201703L
408# define FALLTHROUGH [[fallthrough]]
409#elif __has_cpp_attribute(gnu::fallthrough)
410# define FALLTHROUGH [[gnu::fallthrough]]
411#elif __has_cpp_attribute(clang::fallthrough)
412# define FALLTHROUGH [[clang::fallthrough]]
char(* ArraySizeDeducer(T(&)[n]))[n]
void ignore_result(const T &)
Silence the 'unused result' warning.
Definition: code_annotation.h:67
#define T(string_literal)
Definition: secure_crt.cpp:77