From c2d542562e77164a8d741d829d3a43bdebefa253 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 12 Oct 2014 01:24:28 +0200 Subject: [PATCH] Fixed GLM_FORCE_SIZE_FUNC support overlook #245. Added uninitiallized constructor to quaternion. Fixed lack of conscistency or quaternion constructors with other types. Various uninitilized constructor optimizations --- doc/glm.docx | Bin 1061188 -> 1066342 bytes glm/detail/func_common.inl | 2 +- glm/detail/func_matrix.inl | 6 +- glm/detail/func_vector_relational.inl | 30 ++-- glm/detail/setup.hpp | 69 +++++---- glm/detail/type_mat.inl | 1 + glm/ext.hpp | 2 +- glm/gtc/matrix_access.inl | 12 +- glm/gtc/quaternion.hpp | 27 ++-- glm/gtc/quaternion.inl | 57 +++++--- glm/gtc/ulp.inl | 20 +-- glm/{gtx => gtc}/vec1.hpp | 0 glm/{gtx => gtc}/vec1.inl | 0 glm/gtx/associated_min_max.inl | 198 +++++++++++++------------- glm/gtx/common.hpp | 2 +- glm/gtx/component_wise.inl | 8 +- glm/gtx/matrix_query.inl | 38 ++--- glm/gtx/range.hpp | 20 +-- test/core/core_func_common.cpp | 2 +- test/core/core_func_exponential.cpp | 2 +- test/core/core_type_mat2x2.cpp | 2 +- test/core/core_type_mat2x3.cpp | 2 +- test/core/core_type_vec1.cpp | 6 +- test/gtc/CMakeLists.txt | 1 + test/gtc/gtc_quaternion.cpp | 2 +- test/gtc/gtc_vec1.cpp | 17 +++ test/gtx/gtx_common.cpp | 1 - 27 files changed, 289 insertions(+), 238 deletions(-) rename glm/{gtx => gtc}/vec1.hpp (100%) rename glm/{gtx => gtc}/vec1.inl (100%) create mode 100644 test/gtc/gtc_vec1.cpp diff --git a/doc/glm.docx b/doc/glm.docx index 6fec4de4fd8fff6255f63bae6061ee9c8763361e..4ea8fca2591088b5d70df343ef11e9d9740ac886 100644 GIT binary patch delta 56781 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

j7U>8 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 call(vecType const & x, vecType const & y, vecType const & a) { vecType Result; - for(length_t i = 0; i < x.length(); ++i) + for(length_t i = 0; i < detail::component_count(x); ++i) Result[i] = a[i] ? y[i] : x[i]; return Result; } diff --git a/glm/detail/func_matrix.inl b/glm/detail/func_matrix.inl index 6a3b3099..17602397 100644 --- a/glm/detail/func_matrix.inl +++ b/glm/detail/func_matrix.inl @@ -60,7 +60,7 @@ namespace detail GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec3 const & c, tvec3 const & r) { tmat3x3 m(tmat3x3::_null); - for(length_t i(0); i < m.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) m[i] = c * r[i]; return m; } @@ -72,7 +72,7 @@ namespace detail GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait::type call(tvec4 const & c, tvec4 const & r) { tmat4x4 m(tmat4x4::_null); - for(length_t i(0); i < m.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) m[i] = c * r[i]; return m; } @@ -424,7 +424,7 @@ namespace detail GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'matrixCompMult' only accept floating-point inputs"); matType result(matType::_null); - for(length_t i = 0; i < result.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(result); ++i) result[i] = x[i] * y[i]; return result; } diff --git a/glm/detail/func_vector_relational.inl b/glm/detail/func_vector_relational.inl index 5202bcc1..20645801 100644 --- a/glm/detail/func_vector_relational.inl +++ b/glm/detail/func_vector_relational.inl @@ -39,10 +39,10 @@ namespace glm { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer, "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors"); - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] < y[i]; return Result; @@ -57,10 +57,10 @@ namespace glm { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer, "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors"); - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] <= y[i]; return Result; } @@ -74,10 +74,10 @@ namespace glm { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer, "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors"); - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] > y[i]; return Result; } @@ -91,10 +91,10 @@ namespace glm { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer, "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors"); - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] >= y[i]; return Result; } @@ -106,10 +106,10 @@ namespace glm vecType const & y ) { - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] == y[i]; return Result; } @@ -121,10 +121,10 @@ namespace glm vecType const & y ) { - assert(x.length() == y.length()); + assert(detail::component_count(x) == detail::component_count(y)); typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < x.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] != y[i]; return Result; } @@ -133,7 +133,7 @@ namespace glm GLM_FUNC_QUALIFIER bool any(vecType const & v) { bool Result = false; - for(int i = 0; i < v.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) Result = Result || v[i]; return Result; } @@ -142,7 +142,7 @@ namespace glm GLM_FUNC_QUALIFIER bool all(vecType const & v) { bool Result = true; - for(int i = 0; i < v.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) Result = Result && v[i]; return Result; } @@ -151,7 +151,7 @@ namespace glm GLM_FUNC_QUALIFIER vecType not_(vecType const & v) { typename vecType::bool_type Result(vecType::_null); - for(int i = 0; i < v.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) Result[i] = !v[i]; return Result; } diff --git a/glm/detail/setup.hpp b/glm/detail/setup.hpp index f46cb703..935a1f58 100644 --- a/glm/detail/setup.hpp +++ b/glm/detail/setup.hpp @@ -757,31 +757,6 @@ # endif #endif//GLM_MESSAGE -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Length type - -// User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC - -namespace glm -{ - typedef std::size_t size_t; -#if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC) - typedef std::size_t length_t; -#else - typedef int length_t; -#endif -}//namespace glm - -#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) -# 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 std::size_t") -# endif -#endif//GLM_MESSAGE - /////////////////////////////////////////////////////////////////////////////////////////////////// // Qualifiers @@ -816,3 +791,47 @@ namespace glm #else # define GLM_CONSTEXPR #endif + +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Length type + +// User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC + +namespace glm +{ + typedef std::size_t 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 + +namespace detail +{ + template + GLM_FUNC_QUALIFIER GLM_CONSTEXPR length_t component_count(genType const & m) + { +# if GLM_FORCE_SIZE_FUNC + return m.size(); +# else + return m.length(); +# endif + } + +# if GLM_FORCE_SIZE_FUNC + typedef size_t component_count_t; +# else + typedef length_t component_count_t; +# endif +}//namespace detail +}//namespace glm + +#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) +# 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 diff --git a/glm/detail/type_mat.inl b/glm/detail/type_mat.inl index fd7e1208..620b6d9c 100644 --- a/glm/detail/type_mat.inl +++ b/glm/detail/type_mat.inl @@ -25,3 +25,4 @@ /// @date 2011-06-15 / 2011-06-15 /// @author Christophe Riccio /////////////////////////////////////////////////////////////////////////////////// + diff --git a/glm/ext.hpp b/glm/ext.hpp index fba4c0c5..59d70512 100644 --- a/glm/ext.hpp +++ b/glm/ext.hpp @@ -76,6 +76,7 @@ #include "./gtc/type_precision.hpp" #include "./gtc/type_ptr.hpp" #include "./gtc/ulp.hpp" +#include "./gtc/vec1.hpp" #include "./gtx/associated_min_max.hpp" #include "./gtx/bit.hpp" @@ -123,7 +124,6 @@ #endif #include "./gtx/transform.hpp" #include "./gtx/transform2.hpp" -#include "./gtx/vec1.hpp" #include "./gtx/vector_angle.hpp" #include "./gtx/vector_query.hpp" #include "./gtx/wrap.hpp" diff --git a/glm/gtc/matrix_access.inl b/glm/gtc/matrix_access.inl index cc7b9a32..bd6907ab 100644 --- a/glm/gtc/matrix_access.inl +++ b/glm/gtc/matrix_access.inl @@ -36,10 +36,10 @@ namespace glm typename genType::row_type const & x ) { - assert(index >= 0 && index < m[0].length()); + assert(index >= 0 && static_cast(index) < detail::component_count(m[0])); genType Result = m; - for(length_t i = 0; i < m.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) Result[i][index] = x[i]; return Result; } @@ -51,10 +51,10 @@ namespace glm length_t const & index ) { - assert(index >= 0 && index < m[0].length()); + assert(index >= 0 && static_cast(index) < detail::component_count(m[0])); typename genType::row_type Result; - for(length_t i = 0; i < m.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(m); ++i) Result[i] = m[i][index]; return Result; } @@ -67,7 +67,7 @@ namespace glm typename genType::col_type const & x ) { - assert(index >= 0 && index < m.length()); + assert(index >= 0 && static_cast(index) < detail::component_count(m)); genType Result = m; Result[index] = x; @@ -81,7 +81,7 @@ namespace glm length_t const & index ) { - assert(index >= 0 && index < m.length()); + assert(index >= 0 && static_cast(index) < detail::component_count(m)); return m[index]; } diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index 6ac9812d..a16a761e 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -58,7 +58,7 @@ namespace glm template struct tquat { - enum ctor{null}; + enum ctor{_null}; typedef T value_type; typedef tvec4 bool_type; @@ -74,19 +74,20 @@ namespace glm GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const; #endif//GLM_FORCE_SIZE_FUNC - // Constructors + ////////////////////////////////////// + // Implicit basic constructors + GLM_FUNC_DECL tquat(); - template - GLM_FUNC_DECL explicit tquat( - tquat const & q); - GLM_FUNC_DECL tquat( - T const & s, - tvec3 const & v); - GLM_FUNC_DECL tquat( - T const & w, - T const & x, - T const & y, - T const & z); + GLM_FUNC_DECL tquat(tquat const & q); + template + GLM_FUNC_DECL tquat(tquat const & q); + + ////////////////////////////////////// + // Explicit basic constructors + + GLM_FUNC_DECL explicit tquat(ctor); + GLM_FUNC_DECL explicit tquat(T const & s, tvec3 const & v); + GLM_FUNC_DECL tquat(T const & w, T const & x, T const & y, T const & z); // Convertions diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index 484dc5ed..01513156 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -68,10 +68,9 @@ namespace detail {} template - template GLM_FUNC_QUALIFIER tquat::tquat ( - tquat const & q + tquat const & q ) : x(q.x), y(q.y), @@ -79,6 +78,22 @@ namespace detail w(q.w) {} + template + template + GLM_FUNC_QUALIFIER tquat::tquat + ( + tquat const & q + ) : + x(q.x), + y(q.y), + z(q.z), + w(q.w) + {} + + template + GLM_FUNC_QUALIFIER tquat::tquat(ctor) + {} + template GLM_FUNC_QUALIFIER tquat::tquat ( @@ -731,7 +746,7 @@ namespace detail T biggestVal = sqrt(fourBiggestSquaredMinus1 + T(1)) * T(0.5); T mult = static_cast(0.25) / biggestVal; - tquat Result; + tquat Result(tquat::_null); switch(biggestIndex) { case 0: @@ -804,16 +819,16 @@ namespace detail tvec3 const & v ) { - tquat result; + tquat Result(tquat::_null); T const a(angle); T const s = glm::sin(a * static_cast(0.5)); - result.w = glm::cos(a * static_cast(0.5)); - result.x = v.x * s; - result.y = v.y * s; - result.z = v.z * s; - return result; + Result.w = glm::cos(a * static_cast(0.5)); + Result.x = v.x * s; + Result.y = v.y * s; + Result.z = v.z * s; + return Result; } template @@ -823,8 +838,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] < y[i]; return Result; } @@ -836,8 +851,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] <= y[i]; return Result; } @@ -849,8 +864,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] > y[i]; return Result; } @@ -862,8 +877,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] >= y[i]; return Result; } @@ -875,8 +890,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] == y[i]; return Result; } @@ -888,8 +903,8 @@ namespace detail tquat const & y ) { - tvec4 Result; - for(length_t i = 0; i < x.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) Result[i] = x[i] != y[i]; return Result; } diff --git a/glm/gtc/ulp.inl b/glm/gtc/ulp.inl index be2770f9..aefd7cfc 100644 --- a/glm/gtc/ulp.inl +++ b/glm/gtc/ulp.inl @@ -227,8 +227,8 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType next_float(vecType const & x) { - vecType Result; - for(length_t i = 0; i < Result.length(); ++i) + vecType Result(vecType::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = next_float(x[i]); return Result; } @@ -262,8 +262,8 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType prev_float(vecType const & x) { - vecType Result; - for(length_t i = 0; i < Result.length(); ++i) + vecType Result(vecType::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = prev_float(x[i]); return Result; } @@ -280,8 +280,8 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType next_float(vecType const & x, vecType const & ulps) { - vecType Result; - for(length_t i = 0; i < Result.length(); ++i) + vecType Result(vecType::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = next_float(x[i], ulps[i]); return Result; } @@ -298,8 +298,8 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType prev_float(vecType const & x, vecType const & ulps) { - vecType Result; - for(length_t i = 0; i < Result.length(); ++i) + vecType Result(vecType::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = prev_float(x[i], ulps[i]); return Result; } @@ -338,8 +338,8 @@ namespace glm template class vecType> GLM_FUNC_QUALIFIER vecType float_distance(vecType const & x, vecType const & y) { - vecType Result; - for(length_t i = 0; i < Result.length(); ++i) + vecType Result(vecType::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = float_distance(x[i], y[i]); return Result; } diff --git a/glm/gtx/vec1.hpp b/glm/gtc/vec1.hpp similarity index 100% rename from glm/gtx/vec1.hpp rename to glm/gtc/vec1.hpp diff --git a/glm/gtx/vec1.inl b/glm/gtc/vec1.inl similarity index 100% rename from glm/gtx/vec1.inl rename to glm/gtc/vec1.inl diff --git a/glm/gtx/associated_min_max.inl b/glm/gtx/associated_min_max.inl index 9603d615..cbb60c79 100644 --- a/glm/gtx/associated_min_max.inl +++ b/glm/gtx/associated_min_max.inl @@ -23,10 +23,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin const tvec2& y, const tvec2& b ) { - tvec2 Result; - //Result.x = x[0] < y[0] ? a[0] : b[0]; - //Result.y = x[1] < y[1] ? a[1] : b[1]; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a[i] : b[i]; return Result; } @@ -38,8 +36,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin const tvec3& y, const tvec3& b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a[i] : b[i]; return Result; } @@ -51,8 +49,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin const tvec4& y, const tvec4& b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a[i] : b[i]; return Result; } @@ -64,8 +62,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin T y, const tvec2& b ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x < y ? a[i] : b[i]; return Result; } @@ -77,8 +75,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin T y, const tvec3& b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x < y ? a[i] : b[i]; return Result; } @@ -90,8 +88,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin T y, const tvec4& b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x < y ? a[i] : b[i]; return Result; } @@ -103,8 +101,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin tvec2 const & y, U b ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a : b; return Result; } @@ -112,12 +110,12 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin template GLM_FUNC_QUALIFIER tvec3 associatedMin ( - const tvec3& x, U a, - const tvec3& y, U b + tvec3 const & x, U a, + tvec3 const & y, U b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a : b; return Result; } @@ -129,8 +127,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin const tvec4& y, U b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? a : b; return Result; } @@ -156,8 +154,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin const tvec2& z, const tvec2& c ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); return Result; } @@ -170,8 +168,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin const tvec3& z, const tvec3& c ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); return Result; } @@ -184,8 +182,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin const tvec4& z, const tvec4& c ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); return Result; } @@ -218,8 +216,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin const tvec2& w, const tvec2& d ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]); @@ -240,8 +238,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin const tvec3& w, const tvec3& d ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]); @@ -262,8 +260,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin const tvec4& w, const tvec4& d ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]); @@ -287,8 +285,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin T Test1 = min(x, y); T Test2 = min(z, w); - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x < y ? a[i] : b[i]; U Result2 = z < w ? c[i] : d[i]; @@ -310,8 +308,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin T Test1 = min(x, y); T Test2 = min(z, w); - tvec3 Result; - for(typename tvec3::size_type i = 0; i < tvec3::value_size; ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x < y ? a[i] : b[i]; U Result2 = z < w ? c[i] : d[i]; @@ -333,8 +331,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin T Test1 = min(x, y); T Test2 = min(z, w); - tvec4 Result; - for(typename tvec4::size_type i = 0; i < tvec4::value_size; ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x < y ? a[i] : b[i]; U Result2 = z < w ? c[i] : d[i]; @@ -353,8 +351,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMin const tvec2& w, U d ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < tvec2::value_size(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]);; @@ -375,8 +373,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMin const tvec3& w, U d ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < tvec3::value_size(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]);; @@ -397,8 +395,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMin const tvec4& w, U d ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < tvec4::value_size(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = min(x[i], y[i]); T Test2 = min(z[i], w[i]);; @@ -424,8 +422,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& y, const tvec2& b ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a[i] : b[i]; return Result; } @@ -438,8 +436,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& y, const tvec3& b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a[i] : b[i]; return Result; } @@ -452,8 +450,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& y, const tvec4& b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a[i] : b[i]; return Result; } @@ -466,8 +464,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax T y, const tvec2& b ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? a[i] : b[i]; return Result; } @@ -480,8 +478,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax T y, const tvec3& b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? a[i] : b[i]; return Result; } @@ -494,8 +492,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax T y, const tvec4& b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? a[i] : b[i]; return Result; } @@ -508,8 +506,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& y, U b ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a : b; return Result; } @@ -522,8 +520,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& y, U b ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a : b; return Result; } @@ -536,8 +534,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& y, U b ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? a : b; return Result; } @@ -564,8 +562,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& z, const tvec2& c ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); return Result; } @@ -579,8 +577,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& z, const tvec3& c ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); return Result; } @@ -594,8 +592,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& z, const tvec4& c ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); return Result; } @@ -609,8 +607,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax T z, const tvec2& c ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); return Result; } @@ -624,8 +622,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax T z, const tvec3& c ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); return Result; } @@ -639,8 +637,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax T z, const tvec4& c ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); return Result; } @@ -654,8 +652,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& z, U c ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); return Result; } @@ -669,8 +667,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& z, U c ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); return Result; } @@ -684,8 +682,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& z, U c ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); return Result; } @@ -718,8 +716,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& w, const tvec2& d ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]); @@ -740,8 +738,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& w, const tvec3& d ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]); @@ -762,8 +760,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& w, const tvec4& d ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]); @@ -787,8 +785,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax T Test1 = max(x, y); T Test2 = max(z, w); - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x > y ? a[i] : b[i]; U Result2 = z > w ? c[i] : d[i]; @@ -810,8 +808,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax T Test1 = max(x, y); T Test2 = max(z, w); - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x > y ? a[i] : b[i]; U Result2 = z > w ? c[i] : d[i]; @@ -833,8 +831,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax T Test1 = max(x, y); T Test2 = max(z, w); - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { U Result1 = x > y ? a[i] : b[i]; U Result2 = z > w ? c[i] : d[i]; @@ -853,8 +851,8 @@ GLM_FUNC_QUALIFIER tvec2 associatedMax const tvec2& w, U d ) { - tvec2 Result; - for(typename tvec2::size_type i = 0; i < Result.length(); ++i) + tvec2 Result(tvec2::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]);; @@ -875,8 +873,8 @@ GLM_FUNC_QUALIFIER tvec3 associatedMax const tvec3& w, U d ) { - tvec3 Result; - for(typename tvec3::size_type i = 0; i < Result.length(); ++i) + tvec3 Result(tvec3::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]);; @@ -897,8 +895,8 @@ GLM_FUNC_QUALIFIER tvec4 associatedMax const tvec4& w, U d ) { - tvec4 Result; - for(typename tvec4::size_type i = 0; i < Result.length(); ++i) + tvec4 Result(tvec4::_null); + for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i) { T Test1 = max(x[i], y[i]); T Test2 = max(z[i], w[i]);; diff --git a/glm/gtx/common.hpp b/glm/gtx/common.hpp index da035553..0d7aaff5 100644 --- a/glm/gtx/common.hpp +++ b/glm/gtx/common.hpp @@ -42,7 +42,7 @@ #include "../vec2.hpp" #include "../vec3.hpp" #include "../vec4.hpp" -#include "../gtx/vec1.hpp" +#include "../gtc/vec1.hpp" #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED)) # pragma message("GLM: GLM_GTX_common extension included") diff --git a/glm/gtx/component_wise.inl b/glm/gtx/component_wise.inl index fd1c1d4d..89c5ac7f 100644 --- a/glm/gtx/component_wise.inl +++ b/glm/gtx/component_wise.inl @@ -13,7 +13,7 @@ namespace glm GLM_FUNC_QUALIFIER T compAdd(vecType const & v) { T result(0); - for(length_t i = 0; i < v.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) result += v[i]; return result; } @@ -22,7 +22,7 @@ namespace glm GLM_FUNC_QUALIFIER T compMul(vecType const & v) { T result(1); - for(length_t i = 0; i < v.length(); ++i) + for(detail::component_count_t i = 0; i < detail::component_count(v); ++i) result *= v[i]; return result; } @@ -31,7 +31,7 @@ namespace glm GLM_FUNC_QUALIFIER T compMin(vecType const & v) { T result(v[0]); - for(length_t i = 1; i < v.length(); ++i) + for(detail::component_count_t i = 1; i < detail::component_count(v); ++i) result = min(result, v[i]); return result; } @@ -40,7 +40,7 @@ namespace glm GLM_FUNC_QUALIFIER T compMax(vecType const & v) { T result(v[0]); - for(length_t i = 1; i < v.length(); ++i) + for(detail::component_count_t i = 1; i < detail::component_count(v); ++i) result = max(result, v[i]); return result; } diff --git a/glm/gtx/matrix_query.inl b/glm/gtx/matrix_query.inl index ef795d31..f3dc9208 100644 --- a/glm/gtx/matrix_query.inl +++ b/glm/gtx/matrix_query.inl @@ -16,7 +16,7 @@ namespace glm GLM_FUNC_QUALIFIER bool isNull(tmat2x2 const & m, T const & epsilon) { bool result = true; - for(length_t i = 0; result && i < 2 ; ++i) + for(detail::component_count_t i = 0; result && i < 2 ; ++i) result = isNull(m[i], epsilon); return result; } @@ -25,7 +25,7 @@ namespace glm GLM_FUNC_QUALIFIER bool isNull(tmat3x3 const & m, T const & epsilon) { bool result = true; - for(length_t i = 0; result && i < 3 ; ++i) + for(detail::component_count_t i = 0; result && i < 3 ; ++i) result = isNull(m[i], epsilon); return result; } @@ -34,7 +34,7 @@ namespace glm GLM_FUNC_QUALIFIER bool isNull(tmat4x4 const & m, T const & epsilon) { bool result = true; - for(length_t i = 0; result && i < 4 ; ++i) + for(detail::component_count_t i = 0; result && i < 4 ; ++i) result = isNull(m[i], epsilon); return result; } @@ -43,13 +43,13 @@ namespace glm GLM_FUNC_QUALIFIER bool isIdentity(matType const & m, T const & epsilon) { bool result = true; - for(length_t i(0); result && i < m[0].length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m[0]); ++i) { - for(length_t j(0); result && j < i ; ++j) + for(detail::component_count_t j(0); result && j < i ; ++j) result = abs(m[i][j]) <= epsilon; if(result) result = abs(m[i][i] - 1) <= epsilon; - for(length_t j(i + 1); result && j < m.length(); ++j) + for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j) result = abs(m[i][j]) <= epsilon; } return result; @@ -59,12 +59,12 @@ namespace glm GLM_FUNC_QUALIFIER bool isNormalized(tmat2x2 const & m, T const & epsilon) { bool result(true); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) result = isNormalized(m[i], epsilon); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) { typename tmat2x2::col_type v; - for(length_t j(0); j < m.length(); ++j) + for(detail::component_count_t j(0); j < detail::component_count(m); ++j) v[j] = m[j][i]; result = isNormalized(v, epsilon); } @@ -75,12 +75,12 @@ namespace glm GLM_FUNC_QUALIFIER bool isNormalized(tmat3x3 const & m, T const & epsilon) { bool result(true); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) result = isNormalized(m[i], epsilon); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) { typename tmat3x3::col_type v; - for(length_t j(0); j < m.length(); ++j) + for(detail::component_count_t j(0); j < detail::component_count(m); ++j) v[j] = m[j][i]; result = isNormalized(v, epsilon); } @@ -91,12 +91,12 @@ namespace glm GLM_FUNC_QUALIFIER bool isNormalized(tmat4x4 const & m, T const & epsilon) { bool result(true); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) result = isNormalized(m[i], epsilon); - for(length_t i(0); result && i < m.length(); ++i) + for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i) { typename tmat4x4::col_type v; - for(length_t j(0); j < m.length(); ++j) + for(detail::component_count_t j(0); j < detail::component_count(m); ++j) v[j] = m[j][i]; result = isNormalized(v, epsilon); } @@ -107,15 +107,15 @@ namespace glm GLM_FUNC_QUALIFIER bool isOrthogonal(matType const & m, T const & epsilon) { bool result(true); - for(length_t i(0); result && i < m.length() - 1; ++i) - for(length_t j(i + 1); result && j < m.length(); ++j) + for(detail::component_count_t i(0); result && i < detail::component_count(m) - 1; ++i) + for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j) result = areOrthogonal(m[i], m[j], epsilon); if(result) { matType tmp = transpose(m); - for(length_t i(0); result && i < m.length() - 1 ; ++i) - for(length_t j(i + 1); result && j < m.length(); ++j) + for(detail::component_count_t i(0); result && i < detail::component_count(m) - 1 ; ++i) + for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j) result = areOrthogonal(tmp[i], tmp[j], epsilon); } return result; diff --git a/glm/gtx/range.hpp b/glm/gtx/range.hpp index ac5f9339..d86161ba 100644 --- a/glm/gtx/range.hpp +++ b/glm/gtx/range.hpp @@ -45,32 +45,32 @@ namespace glm /* The glm types provide a .length() member, but for matrices this only defines the number of columns, so we need to work around this */ template - length_t number_of_elements_(tvec2 const & v){ - return v.length(); + detail::component_count_t number_of_elements_(tvec2 const & v){ + return detail::component_count(v); } template - length_t number_of_elements_(tvec3 const & v){ - return v.length(); + detail::component_count_t number_of_elements_(tvec3 const & v){ + return detail::component_count(v); } template - length_t number_of_elements_(tvec4 const & v){ - return v.length(); + detail::component_count_t number_of_elements_(tvec4 const & v){ + return detail::component_count(v); } template - length_t number_of_elements_(genType const & v){ - return v.length() * v[0].length(); + detail::component_count_t number_of_elements_(genType const & m){ + return detail::component_count(m) * detail::component_count(m[0]); } template - const typename genType::value_type * begin(const genType& v){ + const typename genType::value_type * begin(genType const & v){ return value_ptr(v); } template - const typename genType::value_type * end(const genType& v){ + const typename genType::value_type * end(genType const & v){ return begin(v) + number_of_elements_(v); } diff --git a/test/core/core_func_common.cpp b/test/core/core_func_common.cpp index b08da197..b5ebbf71 100644 --- a/test/core/core_func_common.cpp +++ b/test/core/core_func_common.cpp @@ -12,7 +12,7 @@ //#include #include #include -#include +#include #include #include diff --git a/test/core/core_func_exponential.cpp b/test/core/core_func_exponential.cpp index 33f16fc7..8eeaa302 100644 --- a/test/core/core_func_exponential.cpp +++ b/test/core/core_func_exponential.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include int test_pow() { diff --git a/test/core/core_type_mat2x2.cpp b/test/core/core_type_mat2x2.cpp index e777dfa2..6c6e5b5d 100644 --- a/test/core/core_type_mat2x2.cpp +++ b/test/core/core_type_mat2x2.cpp @@ -60,7 +60,7 @@ int test_ctr() { int Error(0); -#if(GLM_HAS_INITIALIZER_LISTS) +#if GLM_HAS_INITIALIZER_LISTS glm::mat2x2 m0( glm::vec2(0, 1), glm::vec2(2, 3)); diff --git a/test/core/core_type_mat2x3.cpp b/test/core/core_type_mat2x3.cpp index 68415c9d..1106b625 100644 --- a/test/core/core_type_mat2x3.cpp +++ b/test/core/core_type_mat2x3.cpp @@ -34,7 +34,7 @@ int test_ctr() { int Error(0); -#if(GLM_HAS_INITIALIZER_LISTS) +#if GLM_HAS_INITIALIZER_LISTS glm::mat2x3 m0( glm::vec3(0, 1, 2), glm::vec3(3, 4, 5)); diff --git a/test/core/core_type_vec1.cpp b/test/core/core_type_vec1.cpp index 3a08c1a7..7b9c90fb 100644 --- a/test/core/core_type_vec1.cpp +++ b/test/core/core_type_vec1.cpp @@ -1,14 +1,14 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// -// Created : 2008-08-31 -// Updated : 2008-08-31 +// Created : 2014-10-11 +// Updated : 2014-10-11 // Licence : This source is under MIT License // File : test/core/type_vec1.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// #define GLM_SWIZZLE -#include +#include int test_operators() { diff --git a/test/gtc/CMakeLists.txt b/test/gtc/CMakeLists.txt index 895a99f0..b3d61b0d 100644 --- a/test/gtc/CMakeLists.txt +++ b/test/gtc/CMakeLists.txt @@ -12,3 +12,4 @@ glmCreateTestGTC(gtc_reciprocal) glmCreateTestGTC(gtc_type_precision) glmCreateTestGTC(gtc_type_ptr) glmCreateTestGTC(gtc_ulp) +glmCreateTestGTC(gtc_vec1) diff --git a/test/gtc/gtc_quaternion.cpp b/test/gtc/gtc_quaternion.cpp index 9b98018c..a78d06cf 100644 --- a/test/gtc/gtc_quaternion.cpp +++ b/test/gtc/gtc_quaternion.cpp @@ -273,7 +273,7 @@ int test_quat_ctr() { int Error(0); -# if(GLM_HAS_INITIALIZER_LISTS) +# if GLM_HAS_INITIALIZER_LISTS { glm::quat A{0, 1, 2, 3}; diff --git a/test/gtc/gtc_vec1.cpp b/test/gtc/gtc_vec1.cpp new file mode 100644 index 00000000..129c76f0 --- /dev/null +++ b/test/gtc/gtc_vec1.cpp @@ -0,0 +1,17 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Created : 2014-10-11 +// Updated : 2014-10-11 +// Licence : This source is under MIT License +// File : test/gtc/vec1.cpp +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#include + +int main() +{ + int Error = 0; + + return Error; +} diff --git a/test/gtx/gtx_common.cpp b/test/gtx/gtx_common.cpp index 2bd3b025..8f06dcd7 100644 --- a/test/gtx/gtx_common.cpp +++ b/test/gtx/gtx_common.cpp @@ -8,7 +8,6 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// #include -#include int test_isdenormal() {