mirror of
https://github.com/g-truc/glm.git
synced 2024-11-10 04:31:47 +00:00
Fixed constexpr build...
This commit is contained in:
parent
6d34ae4c5e
commit
13ca6771ca
@ -122,25 +122,6 @@ namespace detail
|
||||
}
|
||||
};
|
||||
|
||||
template<length_t I, length_t N, relational_type R>
|
||||
struct reduce_relational
|
||||
{
|
||||
template<typename vecType>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static void call(bool& Dst, vecType const& Src)
|
||||
{
|
||||
Dst = relational<R>::call(Dst, Src[I]);
|
||||
reduce_relational<I + 1, N, R>::call(Dst, Src);
|
||||
}
|
||||
};
|
||||
|
||||
template <length_t N, relational_type R>
|
||||
struct reduce_relational<N, N, R>
|
||||
{
|
||||
template<typename vecType>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static void call(bool&, vecType const&)
|
||||
{}
|
||||
};
|
||||
|
||||
template<length_t I, length_t N, relational_type R>
|
||||
struct loop_relational
|
||||
{
|
||||
@ -159,8 +140,51 @@ namespace detail
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static void call(vecBType&, vecType const&, vecType const&)
|
||||
{}
|
||||
};
|
||||
|
||||
template<length_t I, length_t N, relational_type R>
|
||||
struct reduce_relational
|
||||
{
|
||||
template<typename vecType>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static void call(bool& Dst, vecType const& Src)
|
||||
{
|
||||
Dst = relational<R>::call(Dst, Src[I]);
|
||||
reduce_relational<I + 1, N, R>::call(Dst, Src);
|
||||
}
|
||||
};
|
||||
|
||||
template <length_t N, relational_type R>
|
||||
struct reduce_relational<N, N, R>
|
||||
{
|
||||
template<typename vecType>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static void call(bool&, vecType const&)
|
||||
{}
|
||||
};
|
||||
}//namespace detail
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool any(vec<L, bool, Q> const& v)
|
||||
{
|
||||
bool Result = false;
|
||||
detail::reduce_relational<0, L, detail::ANY>::call(Result, v);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool all(vec<L, bool, Q> const& v)
|
||||
{
|
||||
bool Result = true;
|
||||
detail::reduce_relational<0, L, detail::ALL>::call(Result, v);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> not_(vec<L, bool, Q> const& v)
|
||||
{
|
||||
vec<L, bool, Q> Result;
|
||||
detail::loop_relational<0, L, detail::NOT>::call(Result, v, v);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> lessThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y)
|
||||
{
|
||||
@ -208,30 +232,6 @@ namespace detail
|
||||
detail::loop_relational<0, L, detail::NOT_EQUAL>::call(Result, x, y);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool any(vec<L, bool, Q> const& v)
|
||||
{
|
||||
bool Result = false;
|
||||
detail::reduce_relational<0, L, detail::ANY>::call(Result, v);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool all(vec<L, bool, Q> const& v)
|
||||
{
|
||||
bool Result = true;
|
||||
detail::reduce_relational<0, L, detail::ALL>::call(Result, v);
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<length_t L, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> not_(vec<L, bool, Q> const& v)
|
||||
{
|
||||
vec<L, bool, Q> Result;
|
||||
detail::loop_relational<0, L, detail::NOT>::call(Result, v, v);
|
||||
return Result;
|
||||
}
|
||||
}//namespace glm
|
||||
|
||||
#if GLM_CONFIG_SIMD == GLM_ENABLE
|
||||
|
@ -650,7 +650,6 @@ static int test_quat()
|
||||
|
||||
glm::quat constexpr Q = glm::identity<glm::quat>();
|
||||
static_assert(Q.x - glm::quat(1.0f, glm::vec3(0.0f)).x <= glm::epsilon<float>(), "GLM: Failed constexpr");
|
||||
static_assert(Q[0] == 0, "GLM: Failed constexpr");
|
||||
}
|
||||
|
||||
return Error;
|
||||
|
@ -1298,10 +1298,10 @@ static int test_constexpr()
|
||||
{
|
||||
#if GLM_HAS_CONSTEXPR
|
||||
static_assert(glm::abs(1.0f) > 0.0f, "GLM: Failed constexpr");
|
||||
static_assert(glm::abs(glm::vec1(1.0f)) != glm::vec1(0.0f), "GLM: Failed constexpr");
|
||||
static_assert(glm::abs(glm::vec2(1.0f)) != glm::vec2(0.0f), "GLM: Failed constexpr");
|
||||
static_assert(glm::abs(glm::vec3(1.0f)) != glm::vec3(0.0f), "GLM: Failed constexpr");
|
||||
static_assert(glm::abs(glm::vec4(1.0f)) != glm::vec4(0.0f), "GLM: Failed constexpr");
|
||||
constexpr glm::vec1 const A = glm::abs(glm::vec1(1.0f));
|
||||
constexpr glm::vec2 const B = glm::abs(glm::vec2(1.0f));
|
||||
constexpr glm::vec3 const C = glm::abs(glm::vec3(1.0f));
|
||||
constexpr glm::vec4 const D = glm::abs(glm::vec4(1.0f));
|
||||
#endif // GLM_HAS_CONSTEXPR
|
||||
|
||||
return 0;
|
||||
|
@ -187,9 +187,7 @@ static int test_constexpr()
|
||||
#if GLM_HAS_CONSTEXPR
|
||||
static_assert(glm::mat3x3::length() == 3, "GLM: Failed constexpr");
|
||||
|
||||
GLM_CONSTEXPR glm::mat3x3 const Z(0.0f);
|
||||
static_assert(Z[0] == glm::vec3(0.0f), "GLM: Failed constexpr");
|
||||
static_assert(Z == glm::mat3x3(0.0f), "GLM: Failed constexpr");
|
||||
constexpr glm::mat3x3 const Z(0.0f);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
@ -600,7 +600,6 @@ static int test_constexpr()
|
||||
#if GLM_HAS_CONSTEXPR
|
||||
static_assert(glm::vec3::length() == 3, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec3(1.0f).x > 0.0f, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec3(1.0f) == glm::vec3(1.0f), "GLM: Failed constexpr");
|
||||
static_assert(glm::vec3(1.0f, -1.0f, -1.0f).x > 0.0f, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec3(1.0f, -1.0f, -1.0f).y < 0.0f, "GLM: Failed constexpr");
|
||||
#endif
|
||||
|
@ -754,7 +754,6 @@ static int test_constexpr()
|
||||
#if GLM_HAS_CONSTEXPR
|
||||
static_assert(glm::vec4::length() == 4, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec4(1.0f).x > 0.0f, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec4(1.0f) == glm::vec4(1.0f), "GLM: Failed constexpr");
|
||||
static_assert(glm::vec4(1.0f, -1.0f, -1.0f, -1.0f).x > 0.0f, "GLM: Failed constexpr");
|
||||
static_assert(glm::vec4(1.0f, -1.0f, -1.0f, -1.0f).y < 0.0f, "GLM: Failed constexpr");
|
||||
#endif
|
||||
|
@ -2,9 +2,11 @@
|
||||
|
||||
int test_equal()
|
||||
{
|
||||
static_assert(glm::equal(1.01f, 1.02f, 0.1f), "GLM: Failed constexpr");
|
||||
static_assert(!glm::equal(1.01f, 1.02f, 0.001f), "GLM: Failed constexpr");
|
||||
|
||||
# if GLM_CONFIG_CONSTEXP == GLM_ENABLE
|
||||
static_assert(glm::equal(1.01f, 1.02f, 0.1f), "GLM: Failed constexpr");
|
||||
static_assert(!glm::equal(1.01f, 1.02f, 0.001f), "GLM: Failed constexpr");
|
||||
# endif
|
||||
|
||||
int Error = 0;
|
||||
|
||||
Error += glm::equal(1.01f, 1.02f, 0.1f) ? 0 : 1;
|
||||
@ -15,9 +17,11 @@ int test_equal()
|
||||
|
||||
int test_notEqual()
|
||||
{
|
||||
static_assert(glm::notEqual(1.01f, 1.02f, 0.001f), "GLM: Failed constexpr");
|
||||
static_assert(!glm::notEqual(1.01f, 1.02f, 0.1f), "GLM: Failed constexpr");
|
||||
|
||||
# if GLM_CONFIG_CONSTEXP == GLM_ENABLE
|
||||
static_assert(glm::notEqual(1.01f, 1.02f, 0.001f), "GLM: Failed constexpr");
|
||||
static_assert(!glm::notEqual(1.01f, 1.02f, 0.1f), "GLM: Failed constexpr");
|
||||
# endif
|
||||
|
||||
int Error = 0;
|
||||
|
||||
Error += glm::notEqual(1.01f, 1.02f, 0.001f) ? 0 : 1;
|
||||
|
Loading…
Reference in New Issue
Block a user