blob: 9f8a3682f9daf72f0c23dd315c88b957f355a94b [file] [log] [blame]
#ifndef _AOS_MACROS_H_
#define _AOS_MACROS_H_
// This file has some common macros etc.
// A macro to disallow the copy constructor and operator= functions
// This should be used in the private: declarations for a class
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&) = delete; \
void operator=(const TypeName&) = delete
// A macro to wrap arguments to macros that contain commas.
// Useful for DISALLOW_COPY_AND_ASSIGNing templated types with multiple template
// arguments.
#define MACRO_ARG(...) __VA_ARGS__
// Double-wraps macro arguments.
// Necessary to use commas in gtest predicate arguments.
#define MACRO_DARG(...) (__VA_ARGS__)
#ifdef __GNUC__
#define UNUSED_VARIABLE __attribute__ ((unused))
#else
#define UNUSED_VARIABLE
#endif
#define STRINGIFY(x) TO_STRING(x)
#define TO_STRING(x) #x
#ifdef __VXWORKS__
// We're using ancient glibc, so sticking to just what the syscall can handle is
// probably safer.
#define GOOD_PRINTF_FORMAT_TYPE printf
#else
#ifdef __clang__
#define GOOD_PRINTF_FORMAT_TYPE __printf__
#else
#define GOOD_PRINTF_FORMAT_TYPE gnu_printf
#endif
#endif
#endif // _AOS_MACROS_H_