mirror of
https://github.com/g-truc/glm.git
synced 2025-04-04 21:15:03 +00:00
Merge 9097b1469b
into 2d4c4b4dd3
This commit is contained in:
commit
60a4900ac2
4 changed files with 143 additions and 47 deletions
|
@ -106,28 +106,60 @@ namespace glm
|
|||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<2, T, Q>::operator[](typename vec<2, T, Q>::length_type i)
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch(i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<2, T, Q>::operator[](typename vec<2, T, Q>::length_type i) const
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch(i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
// -- Unary arithmetic operators --
|
||||
|
|
|
@ -171,32 +171,64 @@ namespace glm
|
|||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<3, T, Q>::operator[](typename vec<3, T, Q>::length_type i)
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch(i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
return z;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<3, T, Q>::operator[](typename vec<3, T, Q>::length_type i) const
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch(i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
// -- Unary arithmetic operators --
|
||||
|
|
|
@ -362,36 +362,68 @@ namespace detail
|
|||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T& vec<4, T, Q>::operator[](typename vec<4, T, Q>::length_type i)
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch (i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
case 3:
|
||||
return w;
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
case 3:
|
||||
return w;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<4, T, Q>::operator[](typename vec<4, T, Q>::length_type i) const
|
||||
{
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
switch (i)
|
||||
|
||||
#if GLM_LANG & GLM_LANG_CXX14_FLAG || GLM_LANG & GLM_LANG_CXX17_FLAG
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
if (std::is_constant_evaluated())
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
case 3:
|
||||
return w;
|
||||
#endif
|
||||
switch (i)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
return x;
|
||||
case 1:
|
||||
return y;
|
||||
case 2:
|
||||
return z;
|
||||
case 3:
|
||||
return w;
|
||||
}
|
||||
#if GLM_LANG & GLM_LANG_CXX20_FLAG
|
||||
}
|
||||
else
|
||||
{
|
||||
return (&x)[i];
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return (&x)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
// -- Unary arithmetic operators --
|
||||
|
|
|
@ -10,14 +10,14 @@ namespace glm
|
|||
template<typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER typename tdualquat<T, Q>::part_type & tdualquat<T, Q>::operator[](typename tdualquat<T, Q>::length_type i)
|
||||
{
|
||||
assert(i >= 0 && i < this->length());
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
return (&real)[i];
|
||||
}
|
||||
|
||||
template<typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER typename tdualquat<T, Q>::part_type const& tdualquat<T, Q>::operator[](typename tdualquat<T, Q>::length_type i) const
|
||||
{
|
||||
assert(i >= 0 && i < this->length());
|
||||
GLM_ASSERT_LENGTH(i, this->length());
|
||||
return (&real)[i];
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue