@ -1,7 +1,7 @@
///////////////////////////////////////////////////////////////////////////////////
/// OpenGL Mathematics (glm.g-truc.net)
///
/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net)
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
@ -44,6 +44,11 @@
# define GLM_VERSION_PATCH 7
# define GLM_VERSION_REVISION 0
# if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_VERSION_DISPLAYED))
# define GLM_MESSAGE_VERSION_DISPLAYED
# pragma message ("GLM: version 0.9.7")
# endif //GLM_MESSAGE
///////////////////////////////////////////////////////////////////////////////////
// Platform
@ -329,88 +334,132 @@
///////////////////////////////////////////////////////////////////////////////////
// C++ Version
// User defines: GLM_FORCE_CXX98
// User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14
# define GLM_LANG_CXX98_FLAG (1 << 1)
# define GLM_LANG_CXX03_FLAG (1 << 2)
# define GLM_LANG_CXX0X_FLAG (1 << 3)
# define GLM_LANG_CXX11_FLAG (1 << 4)
# define GLM_LANG_CXX1Y_FLAG (1 << 5)
# define GLM_LANG_CXXMS_FLAG (1 << 6)
# define GLM_LANG_CXXGNU_FLAG (1 << 7)
# define GLM_LANG_CXX14_FLAG (1 << 6)
# define GLM_LANG_CXX1Z_FLAG (1 << 7)
# define GLM_LANG_CXXMS_FLAG (1 << 8)
# define GLM_LANG_CXXGNU_FLAG (1 << 9)
# define GLM_LANG_CXX98 GLM_LANG_CXX98_FLAG
# define GLM_LANG_CXX03 (GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)
# define GLM_LANG_CXX0X (GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)
# define GLM_LANG_CXX11 (GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)
# define GLM_LANG_CXX1Y (GLM_LANG_CXX11 | GLM_LANG_CXX1Y_FLAG)
# define GLM_LANG_CXX14 (GLM_LANG_CXX1Y | GLM_LANG_CXX14_FLAG)
# define GLM_LANG_CXX1Z (GLM_LANG_CXX14 | GLM_LANG_CXX1Z_FLAG)
# define GLM_LANG_CXXMS GLM_LANG_CXXMS_FLAG
# define GLM_LANG_CXXGNU GLM_LANG_CXXGNU_FLAG
# if defined(GLM_FORCE_CXX1Y)
# define GLM_LANG GLM_LANG_CXX1Y
# if defined(GLM_FORCE_CXX14)
# undef GLM_FORCE_CXX11
# undef GLM_FORCE_CXX03
# undef GLM_FORCE_CXX98
# define GLM_LANG GLM_LANG_CXX14
# elif defined(GLM_FORCE_CXX11)
# undef GLM_FORCE_CXX03
# undef GLM_FORCE_CXX98
# define GLM_LANG GLM_LANG_CXX11
# elif defined(GLM_FORCE_CXX03)
# undef GLM_FORCE_CXX98
# define GLM_LANG GLM_LANG_CXX03
# elif defined(GLM_FORCE_CXX98)
# define GLM_LANG GLM_LANG_CXX98
# else
# if __cplusplus >= 201103L
# define GLM_LANG GLM_LANG_CXX11
# elif GLM_COMPILER & GLM_COMPILER_CLANG
# if(GLM_PLATFORM == GLM_PLATFORM_APPLE)
# define GLM_DETAIL_MAJOR 1
# else
# define GLM_DETAIL_MAJOR 0
# endif
# if __clang_major__ < (2 + GLM_DETAIL_MAJOR)
# define GLM_LANG GLM_LANG_CXX
# elif __has_feature(cxx_auto_type)
# if GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)
# if __cplusplus >= 201402L // GLM_COMPILER_LLVM34 + -std=c++14
# define GLM_LANG GLM_LANG_CXX14
# elif __has_feature(cxx_decltype_auto) && __has_feature(cxx_aggregate_nsdmi) // GLM_COMPILER_LLVM33 + -std=c++1y
# define GLM_LANG GLM_LANG_CXX1Y
# elif __cplusplus >= 201103L // GLM_COMPILER_LLVM33 + -std=c++11
# define GLM_LANG GLM_LANG_CXX11
# elif __has_feature(cxx_static_assert) // GLM_COMPILER_LLVM29 + -std=c++11
# define GLM_LANG GLM_LANG_CXX0X
# else
# elif __cplusplus >= 199711L
# define GLM_LANG GLM_LANG_CXX98
# else
# define GLM_LANG GLM_LANG_CXX
# endif
# elif GLM_COMPILER & GLM_COMPILER_GCC
# ifdef __GXX_EXPERIMENTAL_CXX0X__
# if __cplusplus >= 201402L
# define GLM_LANG GLM_LANG_CXX14
# elif __cplusplus >= 201103L
# define GLM_LANG GLM_LANG_CXX11
# elif defined(__GXX_EXPERIMENTAL_CXX0X__)
# define GLM_LANG GLM_LANG_CXX0X
# else
# define GLM_LANG GLM_LANG_CXX98
# endif
# elif GLM_COMPILER & GLM_COMPILER_VC
# ifdef _MSC_EXTENSIONS
# if GLM_COMPILER >= GLM_COMPILER_VC2010
# if __cplusplus >= 201402L
# define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
//# elif GLM_COMPILER >= GLM_COMPILER_VC2015
//# define GLM_LANG (GLM_LANG_CXX1Y | GLM_LANG_CXXMS_FLAG)
# elif __cplusplus >= 201103L
# define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
# elif GLM_COMPILER >= GLM_COMPILER_VC2010
# define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
# else
# elif __cplusplus >= 199711L
# define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
# else
# define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)
# endif
# else
# if GLM_COMPILER >= GLM_COMPILER_VC2010
# if __cplusplus >= 201402L
# define GLM_LANG GLM_LANG_CXX14
//# elif GLM_COMPILER >= GLM_COMPILER_VC2015
//# define GLM_LANG GLM_LANG_CXX1Y
# elif __cplusplus >= 201103L
# define GLM_LANG GLM_LANG_CXX11
# elif GLM_COMPILER >= GLM_COMPILER_VC2010
# define GLM_LANG GLM_LANG_CXX0X
# else
# elif __cplusplus >= 199711L
# define GLM_LANG GLM_LANG_CXX98
# else
# define GLM_LANG GLM_LANG_CXX
# endif
# endif
# elif GLM_COMPILER & GLM_COMPILER_INTEL
# ifdef _MSC_EXTENSIONS
# if GLM_COMPILER >= GLM_COMPILER_INTEL13
# if __cplusplus >= 201402L
# define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
# elif __cplusplus >= 201103L
# define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
# elif GLM_COMPILER >= GLM_COMPILER_INTEL13
# define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
# else
# elif __cplusplus >= 199711L
# define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
# else
# define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)
# endif
# else
# if GLM_COMPILER >= GLM_COMPILER_INTEL13
# define GLM_LANG (GLM_LANG_CXX0X)
# if __cplusplus >= 201402L
# define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
# elif __cplusplus >= 201103L
# define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
# elif GLM_COMPILER >= GLM_COMPILER_INTEL13
# define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
# elif __cplusplus >= 199711L
# define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
# else
# define GLM_LANG (GLM_LANG_CXX98)
# define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG )
# endif
# endif
# else
# if __cplusplus >= 199711L
# else // Unkown compiler
# if __cplusplus >= 201402L
# define GLM_LANG GLM_LANG_CXX14
# elif __cplusplus >= 201103L
# define GLM_LANG GLM_LANG_CXX11
# elif __cplusplus >= 199711L
# define GLM_LANG GLM_LANG_CXX98
# endif
# ifndef GLM_FORCE_CXX98
# define GLM_FORCE_CXX98
# else
# define GLM_LANG GLM_LANG_CXX // Good luck with that!
# endif
# ifndef GLM_FORCE_PURE
# define GLM_FORCE_PURE
@ -420,27 +469,36 @@
# if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED)
# define GLM_MESSAGE_LANG_DISPLAYED
# if(GLM_LANG & GLM_LANG_CXXGNU_FLAG)
# pragma message("GLM: C++ with language extensions")
# elif(GLM_LANG & GLM_LANG_CXXMS_FLAG)
# pragma message("GLM: C++ with language extensions")
# elif(GLM_LANG & GLM_LANG_CXX11_FLAG)
# if GLM_LANG & GLM_LANG_CXX1Z_FLAG
# pragma message("GLM: C++1z")
# elif GLM_LANG & GLM_LANG_CXX14_FLAG
# pragma message("GLM: C++14")
# elif GLM_LANG & GLM_LANG_CXX1Y_FLAG
# pragma message("GLM: C++1y")
# elif GLM_LANG & GLM_LANG_CXX11_FLAG
# pragma message("GLM: C++11")
# elif(GLM_LANG & GLM_LANG_CXX0X_FLAG)
# elif GLM_LANG & GLM_LANG_CXX0X_FLAG
# pragma message("GLM: C++0x")
# elif(GLM_LANG & GLM_LANG_CXX03_FLAG)
# elif GLM_LANG & GLM_LANG_CXX03_FLAG
# pragma message("GLM: C++03")
# elif(GLM_LANG & GLM_LANG_CXX98_FLAG)
# elif GLM_LANG & GLM_LANG_CXX98_FLAG
# pragma message("GLM: C++98")
# else
# pragma message("GLM: C++ language undetected")
# endif //GLM_MODEL
# pragma message("GLM: #define GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_LANG_CXX11 or GLM_FORCE_CXX1Y to force using a specific version of the C++ language")
# endif //GLM_LANG
# if GLM_LANG & (GLM_LANG_CXXGNU_FLAG | GLM_LANG_CXXMS_FLAG)
# pragma message("GLM: Language extensions enabled")
# endif //GLM_LANG
# endif //GLM_MESSAGE
///////////////////////////////////////////////////////////////////////////////////
// Has of C++ features
# ifndef __has_include
# define __has_include(x) 0 // Compatibility with non-clang compilers.
# endif
# ifndef __has_feature
# define __has_feature(x) 0 // Compatibility with non-clang compilers.
# endif
@ -453,27 +511,20 @@
// http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx
// N1720
/*
# if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_CXX11_STL (GLM_LANG & GLM_LANG_CXX11_FLAG) && __has_include(<__config>)
# else
# define GLM_HAS_CXX11_STL (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2015)
# endif
*/
# define GLM_HAS_CXX11_STL ((GLM_PLATFORM != GLM_PLATFORM_ANDROID) && (\
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
# define GLM_HAS_CXX11_STL !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ((GLM_PLATFORM != GLM_PLATFORM_ANDROID) && (\
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC48 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2015 ) ) ) )
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) | | \
__has_include ( < __config > ) ) )
// N1720
# define GLM_HAS_STATIC_ASSERT ( \
# define GLM_HAS_STATIC_ASSERT !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2010 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC43 ) ) | | \
__has_feature ( cxx_static_assert ) )
// N1988
# define GLM_HAS_EXTENDED_INTEGER_TYPE ( \
# define GLM_HAS_EXTENDED_INTEGER_TYPE !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2012 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC43 ) ) | | \
@ -481,70 +532,70 @@
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_APPLE_CLANG ) & & ( GLM_COMPILER > = GLM_COMPILER_APPLE_CLANG40 ) ) )
// N2235
# define GLM_HAS_CONSTEXPR ( \
# define GLM_HAS_CONSTEXPR !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC46 ) ) | | \
__has_feature ( cxx_constexpr ) )
// N2672
# define GLM_HAS_INITIALIZER_LISTS ( \
# define GLM_HAS_INITIALIZER_LISTS !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC44 ) ) | | \
__has_feature ( cxx_generalized_initializers ) )
// N2544 Unrestricted unions
# define GLM_HAS_UNRESTRICTED_UNIONS ( \
# define GLM_HAS_UNRESTRICTED_UNIONS !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( GLM_LANG & GLM_LANG_CXXMS_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC46 ) ) | | \
__has_feature ( cxx_unrestricted_unions ) )
// N2346
# define GLM_HAS_DEFAULTED_FUNCTIONS ( \
# define GLM_HAS_DEFAULTED_FUNCTIONS !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC44 ) ) | | \
__has_feature ( cxx_defaulted_functions ) )
// N2118
# define GLM_HAS_RVALUE_REFERENCES ( \
# define GLM_HAS_RVALUE_REFERENCES !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2012 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2012 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC43 ) ) | | \
__has_feature ( cxx_rvalue_references ) )
// N2437
# define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS ( \
# define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_INTEL ) & & ( GLM_COMPILER > = GLM_COMPILER_INTEL14 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_INTEL ) & & ( GLM_COMPILER > = GLM_COMPILER_INTEL14 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC45 ) ) | | \
__has_feature ( cxx_explicit_conversions ) )
# define GLM_HAS_STL_ARRAY ( \
# define GLM_HAS_STL_ARRAY !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2010 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2010 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC43 ) ) )
# define GLM_HAS_TEMPLATE_ALIASES ( \
# define GLM_HAS_TEMPLATE_ALIASES !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) ) | | \
__has_feature ( cxx_alias_templates ) )
# define GLM_HAS_RANGE_FOR ( \
# define GLM_HAS_RANGE_FOR !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2012 ) ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2012 ) ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC46 ) ) | | \
__has_feature ( cxx_range_for ) )
# define GLM_HAS_ASSIGNABLE ( \
# define GLM_HAS_ASSIGNABLE !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_LANG & GLM_LANG_CXX0X_FLAG ) & & ( GLM_COMPILER & GLM_COMPILER_GCC ) & & ( GLM_COMPILER > = GLM_COMPILER_GCC49 ) ) )
# define GLM_HAS_TRIVIAL_QUERIES ( \
# define GLM_HAS_TRIVIAL_QUERIES !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) )
# define GLM_HAS_MAKE_SIGNED ( \
# define GLM_HAS_MAKE_SIGNED !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && ( \
( GLM_LANG & GLM_LANG_CXX11_FLAG ) | | \
( ( GLM_COMPILER & GLM_COMPILER_VC ) & & ( GLM_COMPILER > = GLM_COMPILER_VC2013 ) ) )
@ -573,7 +624,7 @@
# endif
// Not standard
# define GLM_HAS_ANONYMOUS_UNION (GLM_LANG & GLM_LANG_CXXMS_FLAG)
# define GLM_HAS_ANONYMOUS_UNION !defined(GLM_FORCE_CXX98) && !defined(GLM_FORCE_CXX03) && (GLM_LANG & GLM_LANG_CXXMS_FLAG)
///////////////////////////////////////////////////////////////////////////////////
// Platform
@ -683,7 +734,6 @@
# elif(GLM_ARCH & GLM_ARCH_SSE2)
# pragma message("GLM: SSE2 instruction set")
# endif //GLM_ARCH
# pragma message("GLM: #define GLM_FORCE_PURE to avoid using platform specific instruction sets")
# endif //GLM_MESSAGE
///////////////////////////////////////////////////////////////////////////////////
@ -793,11 +843,11 @@
namespace glm
{
using std : : size_t ;
# if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC)
typedef size_t length_t ;
# else
typedef int length_t ;
# endif
# if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC)
typedef size_t length_t ;
# else
typedef int length_t ;
# endif
namespace detail
{
@ -821,11 +871,12 @@ namespace detail
# if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_FORCE_SIZE_T_LENGTH)
# define GLM_MESSAGE_FORCE_SIZE_T_LENGTH
# if defined(GLM_FORCE_SIZE_T_LENGTH)
# if defined GLM_FORCE_SIZE_FUNC
# pragma message("GLM: .length() is replaced by .size() and returns a std::size_t")
# elif defined GLM_FORCE_SIZE_T_LENGTH
# pragma message("GLM: .length() returns glm::length_t, a typedef of std::size_t")
# else
# pragma message("GLM: .length() returns glm::length_t, a typedef of int following the GLSL specification")
# pragma message("GLM: #define GLM_FORCE_SIZE_T_LENGTH for .length() to return a size_t")
# endif
# endif //GLM_MESSAGE