Collection of DPF-based plugins for packaging
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.5KB

  1. /// @ref gtx_compatibility
  2. /// @file glm/gtx/compatibility.inl
  3. #include <limits>
  4. namespace glm
  5. {
  6. // isfinite
  7. template<typename genType>
  8. GLM_FUNC_QUALIFIER bool isfinite(
  9. genType const& x)
  10. {
  11. # if GLM_HAS_CXX11_STL
  12. return std::isfinite(x) != 0;
  13. # elif GLM_COMPILER & GLM_COMPILER_VC
  14. return _finite(x);
  15. # elif GLM_COMPILER & GLM_COMPILER_GCC && GLM_PLATFORM & GLM_PLATFORM_ANDROID
  16. return _isfinite(x) != 0;
  17. # else
  18. if (std::numeric_limits<genType>::is_integer || std::denorm_absent == std::numeric_limits<genType>::has_denorm)
  19. return std::numeric_limits<genType>::min() <= x && std::numeric_limits<genType>::max() >= x;
  20. else
  21. return -std::numeric_limits<genType>::max() <= x && std::numeric_limits<genType>::max() >= x;
  22. # endif
  23. }
  24. template<typename T, qualifier Q>
  25. GLM_FUNC_QUALIFIER vec<1, bool, Q> isfinite(
  26. vec<1, T, Q> const& x)
  27. {
  28. return vec<1, bool, Q>(
  29. isfinite(x.x));
  30. }
  31. template<typename T, qualifier Q>
  32. GLM_FUNC_QUALIFIER vec<2, bool, Q> isfinite(
  33. vec<2, T, Q> const& x)
  34. {
  35. return vec<2, bool, Q>(
  36. isfinite(x.x),
  37. isfinite(x.y));
  38. }
  39. template<typename T, qualifier Q>
  40. GLM_FUNC_QUALIFIER vec<3, bool, Q> isfinite(
  41. vec<3, T, Q> const& x)
  42. {
  43. return vec<3, bool, Q>(
  44. isfinite(x.x),
  45. isfinite(x.y),
  46. isfinite(x.z));
  47. }
  48. template<typename T, qualifier Q>
  49. GLM_FUNC_QUALIFIER vec<4, bool, Q> isfinite(
  50. vec<4, T, Q> const& x)
  51. {
  52. return vec<4, bool, Q>(
  53. isfinite(x.x),
  54. isfinite(x.y),
  55. isfinite(x.z),
  56. isfinite(x.w));
  57. }
  58. }//namespace glm