/** @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 #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 //! Stringification helper macro. #define STRINGIFY2(x) #x //! Stringifies it's argument. #define STRINGIFY(x) STRINGIFY2(x) /** @} */ // end of CoreGroup