DYT/Tool/OpenSceneGraph-3.6.5/include/Imath/ImathPlatform.h

82 lines
1.9 KiB
C
Raw Permalink Normal View History

2024-12-24 23:49:36 +00:00
//
// SPDX-License-Identifier: BSD-3-Clause
// Copyright Contributors to the OpenEXR Project.
//
//
// This file contains functions and constants which aren't
// provided by the system libraries, compilers, or includes on
// certain platforms.
//
#ifndef INCLUDED_IMATHPLATFORM_H
#define INCLUDED_IMATHPLATFORM_H
/// @cond Doxygen_Suppress
#include <math.h>
#include "ImathNamespace.h"
#ifdef __cplusplus
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER
//
// Helpful macros for checking which C++ standard we are compiling with.
//
#if (__cplusplus >= 202002L)
# define IMATH_CPLUSPLUS_VERSION 20
#elif (__cplusplus >= 201703L)
# define IMATH_CPLUSPLUS_VERSION 17
#elif (__cplusplus >= 201402L) || (defined(_MSC_VER) && _MSC_VER >= 1914)
# define IMATH_CPLUSPLUS_VERSION 14
#elif (__cplusplus >= 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1900)
# define IMATH_CPLUSPLUS_VERSION 11
#else
# error "This version of Imath is meant to work only with C++11 and above"
#endif
//
// Constexpr C++14 conditional definition
//
#if (IMATH_CPLUSPLUS_VERSION >= 14)
#define IMATH_CONSTEXPR14 constexpr
#else
#define IMATH_CONSTEXPR14 /* can not be constexpr before c++14 */
#endif
#endif // __cplusplus
#ifndef M_PI
# define M_PI 3.14159265358979323846
#endif
#ifndef M_PI_2
# define M_PI_2 1.57079632679489661923 // pi/2
#endif
//-----------------------------------------------------------------------------
//
// Some, but not all, C++ compilers support the C99 restrict
// keyword or some variant of it, for example, __restrict.
//
//-----------------------------------------------------------------------------
#if defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) || defined(__INTEL_COMPILER)
# define IMATH_RESTRICT __restrict
#else
# define IMATH_RESTRICT
#endif
#ifdef __cplusplus
IMATH_INTERNAL_NAMESPACE_HEADER_EXIT
#endif // __cplusplus
/// @endcond
#endif // INCLUDED_IMATHPLATFORM_H