From 1d9e6dc95c060bb5dac18885ecba8aab8b005598 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 15 Sep 2013 17:55:05 +0200 Subject: [PATCH] Enabled swizzle operator by default, removed GLM_SWIZZLE and add GLM_SWIZZLE_RELAX for Visual C++ lang extension implementation. --- glm/core/type_vec2.hpp | 7 +- glm/core/type_vec3.hpp | 7 +- glm/core/type_vec4.hpp | 7 +- test/core/core_func_swizzle.cpp | 1 - test/core/core_type_vec1.cpp | 1 - test/core/core_type_vec2.cpp | 149 ++++++++++++++++---------------- test/core/core_type_vec3.cpp | 1 - test/core/core_type_vec4.cpp | 5 +- 8 files changed, 82 insertions(+), 96 deletions(-) diff --git a/glm/core/type_vec2.hpp b/glm/core/type_vec2.hpp index 2eca0fde..ce60bc4b 100644 --- a/glm/core/type_vec2.hpp +++ b/glm/core/type_vec2.hpp @@ -56,7 +56,7 @@ namespace detail ////////////////////////////////////// // Data -# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)) +# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE_RELAX)) union { struct{ T x, y; }; @@ -77,10 +77,7 @@ namespace detail union {T x, r, s;}; union {T y, g, t;}; -# if(defined(GLM_SWIZZLE)) - //GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P, detail::tvec2, detail::tref2) - GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4) -# endif//(defined(GLM_SWIZZLE)) + GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P, detail::tvec2, detail::tvec2, detail::tvec3, detail::tvec4) # endif//GLM_LANG ////////////////////////////////////// diff --git a/glm/core/type_vec3.hpp b/glm/core/type_vec3.hpp index 1859c1d7..8b206d4e 100644 --- a/glm/core/type_vec3.hpp +++ b/glm/core/type_vec3.hpp @@ -56,7 +56,7 @@ namespace detail ////////////////////////////////////// // Data -# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)) +# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE_RELAX)) union { struct{ T x, y, z; }; @@ -78,10 +78,7 @@ namespace detail union { T y, g, t; }; union { T z, b, p; }; -# if(defined(GLM_SWIZZLE)) - //GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P, detail::tvec3, detail::tref2, detail::tref3) - GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4) -# endif//(defined(GLM_SWIZZLE)) + GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P, detail::tvec3, detail::tvec2, detail::tvec3, detail::tvec4) # endif//GLM_LANG ////////////////////////////////////// diff --git a/glm/core/type_vec4.hpp b/glm/core/type_vec4.hpp index afc11675..348718fa 100644 --- a/glm/core/type_vec4.hpp +++ b/glm/core/type_vec4.hpp @@ -56,7 +56,7 @@ namespace detail ////////////////////////////////////// // Data -# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)) +# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE_RELAX)) union { struct { T r, g, b, a; }; @@ -79,10 +79,7 @@ namespace detail union { T z, b, p; }; union { T w, a, q; }; -# if(defined(GLM_SWIZZLE)) - //GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P, detail::tvec4, detail::tref2, detail::tref3, detail::tref4) - GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4) -# endif//(defined(GLM_SWIZZLE)) + GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P, detail::tvec4, detail::tvec2, detail::tvec3, detail::tvec4) # endif//GLM_LANG ////////////////////////////////////// diff --git a/test/core/core_func_swizzle.cpp b/test/core/core_func_swizzle.cpp index 5aa0ed19..9d5929b7 100644 --- a/test/core/core_func_swizzle.cpp +++ b/test/core/core_func_swizzle.cpp @@ -8,7 +8,6 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// #define GLM_MESSAGES -#define GLM_SWIZZLE #include int test_ivec2_swizzle() diff --git a/test/core/core_type_vec1.cpp b/test/core/core_type_vec1.cpp index 7c0834ab..6f59ccee 100644 --- a/test/core/core_type_vec1.cpp +++ b/test/core/core_type_vec1.cpp @@ -7,7 +7,6 @@ // File : test/core/type_vec1.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// -#define GLM_SWIZZLE #include #include diff --git a/test/core/core_type_vec2.cpp b/test/core/core_type_vec2.cpp index ebdf2306..458ddf60 100644 --- a/test/core/core_type_vec2.cpp +++ b/test/core/core_type_vec2.cpp @@ -7,71 +7,70 @@ // File : test/core/type_vec2.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// -#define GLM_SWIZZLE #include int test_vec2_operators() { - int Error = 0; - - { - glm::vec2 A(1.0f); - glm::vec2 B(1.0f); - Error += A != B ? 1 : 0; - Error += A == B ? 0 : 1; - } - - { - glm::vec2 A(1.0f); - glm::vec2 C = A + 1.0f; - A += 1.0f; - Error += A.x == 2.0f && A.y == 2.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - - { - glm::vec2 A(1.0f); - glm::vec2 B(2.0f,-1.0f); - glm::vec2 C = A + B; - A += B; - Error += A.x == 3.0f && A.y == 0.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - - { - glm::vec2 A(1.0f); - glm::vec2 C = A - 1.0f; - A -= 1.0f; - Error += A.x == 0.0f && A.y == 0.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - - { - glm::vec2 A(1.0f); - glm::vec2 B(2.0f,-1.0f); - glm::vec2 C = A - B; - A -= B; - Error += A.x == -1.0f && A.y == 2.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - - { - glm::vec2 A(1.0f); - glm::vec2 C = A * 2.0f; - A *= 2.0f; - Error += A.x == 2.0f && A.y == 2.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - - { - glm::vec2 A(2.0f); - glm::vec2 B(2.0f); - glm::vec2 C = A / B; - A /= B; - Error += A.x == 1.0f && A.y == 1.0f ? 0 : 1; - Error += A.x == C.x && A.y == C.y ? 0 : 1; - } - + int Error = 0; + + { + glm::vec2 A(1.0f); + glm::vec2 B(1.0f); + Error += A != B ? 1 : 0; + Error += A == B ? 0 : 1; + } + + { + glm::vec2 A(1.0f); + glm::vec2 C = A + 1.0f; + A += 1.0f; + Error += A.x == 2.0f && A.y == 2.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + + { + glm::vec2 A(1.0f); + glm::vec2 B(2.0f,-1.0f); + glm::vec2 C = A + B; + A += B; + Error += A.x == 3.0f && A.y == 0.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + + { + glm::vec2 A(1.0f); + glm::vec2 C = A - 1.0f; + A -= 1.0f; + Error += A.x == 0.0f && A.y == 0.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + + { + glm::vec2 A(1.0f); + glm::vec2 B(2.0f,-1.0f); + glm::vec2 C = A - B; + A -= B; + Error += A.x == -1.0f && A.y == 2.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + + { + glm::vec2 A(1.0f); + glm::vec2 C = A * 2.0f; + A *= 2.0f; + Error += A.x == 2.0f && A.y == 2.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + + { + glm::vec2 A(2.0f); + glm::vec2 B(2.0f); + glm::vec2 C = A / B; + A /= B; + Error += A.x == 1.0f && A.y == 1.0f ? 0 : 1; + Error += A.x == C.x && A.y == C.y ? 0 : 1; + } + { glm::vec2 A(1.0f, 2.0f); glm::vec2 B(4.0f, 5.0f); @@ -191,20 +190,20 @@ int test_vec2_operators() int test_vec2_ctor() { - int Error = 0; - - { - glm::vec2 A = glm::vec2(2.0f); - glm::vec2 B = glm::vec2(2.0f, 3.0f); - glm::vec2 C = glm::vec2(2.0f, 3.0); - //glm::vec2 D = glm::dvec2(2.0); // Build error TODO: What does the specification says? - glm::vec2 E(glm::dvec2(2.0)); - glm::vec2 F(glm::ivec2(2)); - - } - + int Error = 0; + + { + glm::vec2 A = glm::vec2(2.0f); + glm::vec2 B = glm::vec2(2.0f, 3.0f); + glm::vec2 C = glm::vec2(2.0f, 3.0); + //glm::vec2 D = glm::dvec2(2.0); // Build error TODO: What does the specification says? + glm::vec2 E(glm::dvec2(2.0)); + glm::vec2 F(glm::ivec2(2)); + + } + return Error; -} +} int test_vec2_size() { @@ -230,7 +229,7 @@ int test_operator_increment() glm::ivec2 v3 = ++v1; glm::ivec2 v4 = v2++; - Error += glm::all(glm::equal(v0, v4)) ? 0 : 1; + Error += glm::all(glm::equal(v0, v4)) ? 0 : 1; Error += glm::all(glm::equal(v1, v2)) ? 0 : 1; Error += glm::all(glm::equal(v1, v3)) ? 0 : 1; diff --git a/test/core/core_type_vec3.cpp b/test/core/core_type_vec3.cpp index f3a3259d..995e07f0 100644 --- a/test/core/core_type_vec3.cpp +++ b/test/core/core_type_vec3.cpp @@ -7,7 +7,6 @@ // File : test/core/type_vec3.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// -#define GLM_SWIZZLE #include #include #include diff --git a/test/core/core_type_vec4.cpp b/test/core/core_type_vec4.cpp index 3f5fd5cc..5c7e0ba9 100644 --- a/test/core/core_type_vec4.cpp +++ b/test/core/core_type_vec4.cpp @@ -7,7 +7,6 @@ // File : test/core/type_vec4.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// -#define GLM_SWIZZLE #include #include @@ -216,7 +215,7 @@ int test_vec4_swizzle_partial() glm::vec4 A(1, 2, 3, 4); -# if((GLM_LANG & GLM_LANG_CXXMS_FLAG) && defined(GLM_SWIZZLE)) +# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE_RELAX)) { glm::vec4 B(A.xy, A.zw); Error += A == B ? 0 : 1; @@ -242,7 +241,7 @@ int test_vec4_swizzle_partial() glm::vec4 B(1.0f, A.yzw); Error += A == B ? 0 : 1; } -# endif//GLM_LANG +# endif return Error; }