/src/FreeImage/Source/OpenEXR/Imath/ImathPlatform.h

https://bitbucket.org/cabalistic/ogredeps/ · C++ Header · 112 lines · 24 code · 24 blank · 64 comment · 3 complexity · 77414a74e5758e7b23a0ddd9ee52d7d3 MD5 · raw file

  1. ///////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
  4. // Digital Ltd. LLC
  5. //
  6. // All rights reserved.
  7. //
  8. // Redistribution and use in source and binary forms, with or without
  9. // modification, are permitted provided that the following conditions are
  10. // met:
  11. // * Redistributions of source code must retain the above copyright
  12. // notice, this list of conditions and the following disclaimer.
  13. // * Redistributions in binary form must reproduce the above
  14. // copyright notice, this list of conditions and the following disclaimer
  15. // in the documentation and/or other materials provided with the
  16. // distribution.
  17. // * Neither the name of Industrial Light & Magic nor the names of
  18. // its contributors may be used to endorse or promote products derived
  19. // from this software without specific prior written permission.
  20. //
  21. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  25. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  26. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  27. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  28. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  29. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  30. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  31. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. //
  33. ///////////////////////////////////////////////////////////////////////////
  34. #ifndef INCLUDED_IMATHPLATFORM_H
  35. #define INCLUDED_IMATHPLATFORM_H
  36. //----------------------------------------------------------------------------
  37. //
  38. // ImathPlatform.h
  39. //
  40. // This file contains functions and constants which aren't
  41. // provided by the system libraries, compilers, or includes on
  42. // certain platforms.
  43. //
  44. //----------------------------------------------------------------------------
  45. #include <math.h>
  46. #ifndef M_PI
  47. #define M_PI 3.14159265358979323846
  48. #endif
  49. #ifndef M_PI_2
  50. #define M_PI_2 1.57079632679489661923 // pi/2
  51. #endif
  52. //-----------------------------------------------------------------------------
  53. //
  54. // Some, but not all, C++ compilers support the C99 restrict
  55. // keyword or some variant of it, for example, __restrict.
  56. //
  57. //-----------------------------------------------------------------------------
  58. #if defined __GNUC__
  59. //
  60. // supports __restrict
  61. //
  62. #define IMATH_RESTRICT __restrict
  63. #elif defined (__INTEL_COMPILER) || \
  64. defined(__ICL) || \
  65. defined(__ICC) || \
  66. defined(__ECC)
  67. //
  68. // supports restrict
  69. //
  70. #define IMATH_RESTRICT restrict
  71. #elif defined __sgi
  72. //
  73. // supports restrict
  74. //
  75. #define IMATH_RESTRICT restrict
  76. #elif defined _MSC_VER
  77. //
  78. // supports __restrict
  79. //
  80. // #define IMATH_RESTRICT __restrict
  81. #define IMATH_RESTRICT
  82. #else
  83. //
  84. // restrict / __restrict not supported
  85. //
  86. #define IMATH_RESTRICT
  87. #endif
  88. #endif // INCLUDED_IMATHPLATFORM_H