| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //
- // 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
|