/** @file Def.h
|
|
* @brief Common SDK definitions.
|
|
* @copyright VisionLabs LLC
|
|
* @date 25.06.2014
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#if defined(__clang__) || defined(__GNUC__)
|
|
#define FSDK_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
|
|
#elif defined(_MSC_VER)
|
|
#define FSDK_DEPRECATED(msg) __declspec(deprecated(msg))
|
|
#else
|
|
#define FSDK_DEPRECATED(msg)
|
|
#endif
|
|
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
#if defined (SDK_DLL_EXPORTS)
|
|
#define FSDK_API __declspec(dllexport) //!< DLL export specifier.
|
|
#else
|
|
#define FSDK_API __declspec(dllimport) //!< DLL import specifier.
|
|
#endif
|
|
#else
|
|
#if __GNUC__ >= 4
|
|
#define FSDK_API __attribute__ ((visibility ("default")))
|
|
#else
|
|
#define FSDK_API //!< Dummy.
|
|
#endif
|
|
#endif
|
|
|
|
#if __APPLE__
|
|
#include <TargetConditionals.h>
|
|
#if TARGET_CPU_ARM || TARGET_CPU_ARM64
|
|
#define IOS
|
|
#endif
|
|
#endif // __APPLE__
|
|
|
|
/** @addtogroup CoreGroup
|
|
* @{
|
|
*/
|
|
|
|
// Aling value up to align so that value % align == 0.
|
|
#define ALIGN_UP(value, align) \
|
|
(((value) & (align-1)) ? \
|
|
(((value) + (align-1)) & ~(align-1)) : \
|
|
(value))
|
|
|
|
#if defined(_MSC_VER)
|
|
#define ALIGNED(x) __declspec(align(x))
|
|
#define RESTRICT __restrict
|
|
#define FORCE_INLINE __forceinline
|
|
#else
|
|
#define ALIGNED(x) __attribute__ ((aligned(x)))
|
|
#define RESTRICT __restrict__
|
|
#define FORCE_INLINE inline __attribute__ ((always_inline))
|
|
#endif
|
|
|
|
//! Smart ptr declaration helper macro
|
|
#define DECLARE_SMARTPTR(X) struct X; using X##Ptr = fsdk::Ref<X>
|
|
|
|
//! Stringification helper macro.
|
|
#define STRINGIFY2(x) #x
|
|
|
|
//! Stringifies it's argument.
|
|
#define STRINGIFY(x) STRINGIFY2(x)
|
|
|
|
/** @} */ // end of CoreGroup
|