﻿#ifndef __OTX_COMPILER_MSVC_H__
#define __OTX_COMPILER_MSVC_H__

#if (defined(_MSC_VER) && _MSC_VER <= 1900)
// version le VS2015
#define prefetch(addr) _mm_prefetch((const char *)addr, 0)
#else
#define prefetch(addr) _mm_prefetch(addr, 0)
#endif

#define likely(expr) (!!(expr))
#define unlikely(expr) (!!!(expr))

#ifdef _WINDLL
#define OTX_API _declspec(dllexport)
#else
#define OTX_API _declspec(dllimport)
#endif //_WINDLL
#define ALIGN(n) _declspec(align(n))
#define SECTION(name)
#define WEAK
/*
 * pWeakValue MUST be an extern const variable, which will be aliased to
 * pDefaultWeakValue if no real user definition is present, thanks to the
 * alternatename directive.
 */

// extern const char *pWeakValue;
// extern const char *pDefaultWeakValue = NULL;

// #pragma comment(linker, "/alternatename:_pWeakValue=_pDefaultWeakValue")

#endif // __OTX_COMPILER_MSVC_H__