summaryrefslogtreecommitdiffstats
path: root/external/include/glm/gtx/compatibility.inl
diff options
context:
space:
mode:
Diffstat (limited to 'external/include/glm/gtx/compatibility.inl')
-rw-r--r--external/include/glm/gtx/compatibility.inl65
1 files changed, 65 insertions, 0 deletions
diff --git a/external/include/glm/gtx/compatibility.inl b/external/include/glm/gtx/compatibility.inl
new file mode 100644
index 0000000..368527a
--- /dev/null
+++ b/external/include/glm/gtx/compatibility.inl
@@ -0,0 +1,65 @@
+/// @ref gtx_compatibility
+/// @file glm/gtx/compatibility.inl
+
+#include <limits>
+
+namespace glm
+{
+ // isfinite
+ template <typename genType>
+ GLM_FUNC_QUALIFIER bool isfinite(
+ genType const & x)
+ {
+# if GLM_HAS_CXX11_STL
+ return std::isfinite(x) != 0;
+# elif GLM_COMPILER & GLM_COMPILER_VC
+ return _finite(x);
+# elif GLM_COMPILER & GLM_COMPILER_GCC && GLM_PLATFORM & GLM_PLATFORM_ANDROID
+ return _isfinite(x) != 0;
+# else
+ if (std::numeric_limits<genType>::is_integer || std::denorm_absent == std::numeric_limits<genType>::has_denorm)
+ return std::numeric_limits<genType>::min() <= x && std::numeric_limits<genType>::max() >= x;
+ else
+ return -std::numeric_limits<genType>::max() <= x && std::numeric_limits<genType>::max() >= x;
+# endif
+ }
+
+ template <typename T, precision P>
+ GLM_FUNC_QUALIFIER tvec1<bool, P> isfinite(
+ tvec1<T, P> const & x)
+ {
+ return tvec1<bool, P>(
+ isfinite(x.x));
+ }
+
+ template <typename T, precision P>
+ GLM_FUNC_QUALIFIER tvec2<bool, P> isfinite(
+ tvec2<T, P> const & x)
+ {
+ return tvec2<bool, P>(
+ isfinite(x.x),
+ isfinite(x.y));
+ }
+
+ template <typename T, precision P>
+ GLM_FUNC_QUALIFIER tvec3<bool, P> isfinite(
+ tvec3<T, P> const & x)
+ {
+ return tvec3<bool, P>(
+ isfinite(x.x),
+ isfinite(x.y),
+ isfinite(x.z));
+ }
+
+ template <typename T, precision P>
+ GLM_FUNC_QUALIFIER tvec4<bool, P> isfinite(
+ tvec4<T, P> const & x)
+ {
+ return tvec4<bool, P>(
+ isfinite(x.x),
+ isfinite(x.y),
+ isfinite(x.z),
+ isfinite(x.w));
+ }
+
+}//namespace glm