#ifndef MINBASE_ANNOTATIONS_H
#define MINBASE_ANNOTATIONS_H
#pragma once
#ifndef MINBASE_IDENTIFY_H
#error Must include minbase_identify.h
#endif
#ifdef _MSC_VER
#define HINT(THE_HINT) __assume((THE_HINT))
#elif defined ( COMPILER_GCC ) && ( ( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 5 ) ) || __clang__ )
#define HINT(THE_HINT) do { if ( !(THE_HINT) ) __builtin_unreachable(); } while (0)
#elif defined ( COMPILER_GCC ) || defined ( COMPILER_SNC )
#define HINT(THE_HINT) __builtin_expect( THE_HINT, 1 )
#else
#define HINT(THE_HINT) (void)0
#endif
#if _MSC_VER >= 1600
#ifdef _PREFAST_
#include <sal.h>
#pragma warning(disable : 6308)
#pragma warning(disable : 6255)
#pragma warning(disable : 6387)
#pragma warning(disable : 6309)
#pragma warning(disable : 6011)
#pragma warning(disable : 6211)
#pragma warning(disable : 6031)
#pragma warning(disable : 6326)
#pragma warning(disable : 6239)
#pragma warning(disable : 6285)
#pragma warning(disable : 6237)
#pragma warning(disable : 6235)
#pragma warning(disable : 6240)
#pragma warning(disable : 6323)
#pragma warning(disable : 6326)
#pragma warning(disable : 6335)
#pragma warning(disable : 6320)
#pragma warning(disable : 6250)
#pragma warning(disable : 6384)
#define ANALYZE_SUPPRESS(wnum) __pragma(warning(suppress: wnum))
#define ANALYZE_SUPPRESS2(wnum1, wnum2) __pragma(warning(supress: wnum1 wnum2))
#define ANALYZE_SUPPRESS3(wnum1, wnum2, wnum3) __pragma(warning(suppress: wnum1 wnum2 wnum3))
#define ANALYZE_SUPPRESS4(wnum1, wnum2, wnum3, wnum4) __pragma(warning(suppress: wnum1 wnum2 wnum3 wnum4))
#define PRINTF_FORMAT_STRING _Printf_format_string_
#define SCANF_FORMAT_STRING _Scanf_format_string_impl_
#define IN_Z _In_z_
#define IN_CAP(x) _In_count_(x)
#define IN_BYTECAP(x) _In_bytecount_(x)
#define OUT_Z_CAP(x) _Out_z_cap_(x)
#define OUT_CAP(x) _Out_cap_(x)
#define OUT_BYTECAP(x) _Out_bytecap_(x)
#define OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
#define INOUT_BYTECAP(x) _Inout_bytecap_(x)
#define INOUT_Z_CAP(x) _Inout_z_cap_(x)
#define INOUT_Z_BYTECAP(x) _Inout_z_bytecap_(x)
#if _MSC_VER >= 1700
#define IN_Z_ARRAY _Pre_z_
#define OUT_Z_ARRAY _Post_z_
#define INOUT_Z_ARRAY _Prepost_z_
#else
#define IN_Z_ARRAY _Deref_pre_z_
#define OUT_Z_ARRAY _Deref_post_z_
#define INOUT_Z_ARRAY _Deref_prepost_z_
#endif
#endif #endif
#ifndef ANALYZE_SUPPRESS
#define ANALYZE_SUPPRESS(wnum)
#define ANALYZE_SUPPRESS2(wnum1, wnum2)
#define ANALYZE_SUPPRESS3(wnum1, wnum2, wnum3)
#define ANALYZE_SUPPRESS4(wnum1, wnum2, wnum3, wnum4)
#define PRINTF_FORMAT_STRING
#define SCANF_FORMAT_STRING
#define IN_Z
#define IN_CAP(x)
#define IN_BYTECAP(x)
#define OUT_Z_CAP(x)
#define OUT_CAP(x)
#define OUT_BYTECAP(x)
#define OUT_Z_BYTECAP(x)
#define INOUT_BYTECAP(x)
#define INOUT_Z_CAP(x)
#define INOUT_Z_BYTECAP(x)
#define OUT_Z_ARRAY
#define INOUT_Z_ARRAY
#endif
#ifdef __MINGW32__
#define FMTFUNCTION( fmtargnumber, firstvarargnumber ) __attribute__ (( format( __MINGW_PRINTF_FORMAT, fmtargnumber, firstvarargnumber )))
#elif defined(COMPILER_GCC)
#define FMTFUNCTION( fmtargnumber, firstvarargnumber ) __attribute__ (( format( __printf__, fmtargnumber, firstvarargnumber )))
#else
#define FMTFUNCTION( fmtargnumber, firstvarargnumber )
#endif
#endif