Fixed GLM_FORCE_SIZE_FUNC and added test #245

This commit is contained in:
Christophe Riccio
2014-10-12 20:50:50 +02:00
parent b2ce1a726b
commit 85037a164f
32 changed files with 207 additions and 90 deletions

View File

@@ -138,20 +138,15 @@ namespace detail
GLM_FUNC_QUALIFIER value_type& operator[] (size_t i)
{
#ifndef __CUDA_ARCH__
static
#endif
const int offset_dst[4] = { E0, E1, E2, E3 };
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
{
#ifndef __CUDA_ARCH__
static
#endif
const int offset_dst[4] = { E0, E1, E2, E3 };
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
protected:
template <typename T>
GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op)
@@ -179,10 +174,7 @@ namespace detail
GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
{
#ifndef __CUDA_ARCH__
static
#endif
const int offset_dst[4] = { E0, E1, E2, E3 };
const int offset_dst[4] = { E0, E1, E2, E3 };
return this->elem(offset_dst[i]);
}
};

View File

@@ -808,21 +808,21 @@ namespace glm
namespace detail
{
# ifdef GLM_FORCE_SIZE_FUNC
typedef size_t component_count_t;
# else
typedef length_t component_count_t;
# endif
template <typename genType>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR length_t component_count(genType const & m)
GLM_FUNC_QUALIFIER GLM_CONSTEXPR component_count_t component_count(genType const & m)
{
# if GLM_FORCE_SIZE_FUNC
# ifdef 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

View File

@@ -47,11 +47,11 @@ namespace glm
typedef tmat2x2<T, P> type;
typedef tmat2x2<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
template <typename U, precision Q>
friend tvec2<U, Q> operator/(tmat2x2<U, Q> const & m, tvec2<U, Q> const & v);

View File

@@ -46,7 +46,7 @@ namespace detail
}
}//namespace detail
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat2x2<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat2x3<T, P> type;
typedef tmat3x2<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat2x3<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat2x4<T, P> type;
typedef tmat4x2<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat2x4<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat3x2<T, P> type;
typedef tmat2x3<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat3x2<T, P>::size() const
{

View File

@@ -47,11 +47,11 @@ namespace glm
typedef tmat3x3<T, P> type;
typedef tmat3x3<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
template <typename U, precision Q>
friend tvec3<U, Q> operator/(tmat3x3<U, Q> const & m, tvec3<U, Q> const & v);

View File

@@ -52,7 +52,7 @@ namespace detail
}
}//namespace detail
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat3x3<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat3x4<T, P> type;
typedef tmat4x3<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat3x4<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat4x2<T, P> type;
typedef tmat2x4<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat4x2<T, P>::size() const
{

View File

@@ -48,11 +48,11 @@ namespace glm
typedef tmat4x3<T, P> type;
typedef tmat3x4<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
private:
// Data

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat4x3<T, P>::size() const
{

View File

@@ -47,11 +47,11 @@ namespace glm
typedef tmat4x4<T, P> type;
typedef tmat4x4<T, P> transpose_type;
#if GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
#else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
# endif//GLM_FORCE_SIZE_FUNC
template <typename U, precision Q>
friend tvec4<U, Q> operator/(tmat4x4<U, Q> const & m, tvec4<U, Q> const & v);

View File

@@ -88,7 +88,7 @@ namespace detail
}
}//namespace detail
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tmat4x4<T, P>::size() const
{

View File

@@ -41,6 +41,9 @@ namespace glm
typedef tvec1<float, highp> highp_vec1_t;
typedef tvec1<float, mediump> mediump_vec1_t;
typedef tvec1<float, lowp> lowp_vec1_t;
typedef tvec1<double, highp> highp_dvec1_t;
typedef tvec1<double, mediump> mediump_dvec1_t;
typedef tvec1<double, lowp> lowp_dvec1_t;
typedef tvec1<int, highp> highp_ivec1_t;
typedef tvec1<int, mediump> mediump_ivec1_t;
typedef tvec1<int, lowp> lowp_ivec1_t;

View File

@@ -56,7 +56,7 @@ namespace glm
//////////////////////////////////////
// Helper
# if GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
/// Return the count of components of the vector
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tvec1<T, P>::size() const
{
@@ -48,14 +48,14 @@ namespace glm
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec1<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec1<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}

View File

@@ -57,7 +57,7 @@ namespace glm
//////////////////////////////////////
// Helper
# if GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
/// Return the count of components of the vector
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tvec2<T, P>::size() const
{
@@ -48,14 +48,14 @@ namespace glm
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec2<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec2<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}

View File

@@ -57,7 +57,7 @@ namespace glm
//////////////////////////////////////
// Helper
# if GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
/// Return the count of components of the vector
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tvec3<T, P>::size() const
{
@@ -48,14 +48,14 @@ namespace glm
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec3<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec3<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}

View File

@@ -80,7 +80,7 @@ namespace glm
//////////////////////////////////////
// Helper
# if GLM_FORCE_SIZE_FUNC
# ifdef GLM_FORCE_SIZE_FUNC
/// Return the count of components of the vector
GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
# else

View File

@@ -28,7 +28,7 @@
namespace glm
{
#if GLM_FORCE_SIZE_FUNC
#ifdef GLM_FORCE_SIZE_FUNC
template <typename T, precision P>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR size_t tvec4<T, P>::size() const
{
@@ -48,14 +48,14 @@ namespace glm
template <typename T, precision P>
GLM_FUNC_QUALIFIER T & tvec4<T, P>::operator[](length_t i)
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}
template <typename T, precision P>
GLM_FUNC_QUALIFIER T const & tvec4<T, P>::operator[](length_t i) const
{
assert(i >= 0 && i < this->length());
assert(i >= 0 && static_cast<detail::component_count_t>(i) < detail::component_count(*this));
return (&x)[i];
}

View File

@@ -61,6 +61,21 @@ namespace glm
/// @see gtx_vec1 extension.
typedef lowp_vec1_t lowp_vec1;
//! 1 component vector of high precision floating-point numbers.
//! There is no guarantee on the actual precision.
/// @see gtx_vec1 extension.
typedef highp_dvec1_t highp_dvec1;
//! 1 component vector of medium precision floating-point numbers.
//! There is no guarantee on the actual precision.
/// @see gtx_vec1 extension.
typedef mediump_dvec1_t mediump_dvec1;
//! 1 component vector of low precision floating-point numbers.
//! There is no guarantee on the actual precision.
/// @see gtx_vec1 extension.
typedef lowp_dvec1_t lowp_dvec1;
//! 1 component vector of high precision signed integer numbers.
//! There is no guarantee on the actual precision.
/// @see gtx_vec1 extension.
@@ -133,6 +148,18 @@ namespace glm
typedef highp_vec1 vec1;
#endif//GLM_PRECISION
#if(defined(GLM_PRECISION_HIGHP_DOUBLE))
typedef highp_dvec1 dvec1;
#elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
typedef mediump_dvec1 dvec1;
#elif(defined(GLM_PRECISION_LOWP_DOUBLE))
typedef lowp_dvec1 dvec1;
#else
/// 1 component vector of floating-point numbers.
/// @see gtx_vec1 extension.
typedef highp_dvec1 dvec1;
#endif//GLM_PRECISION
#if(defined(GLM_PRECISION_HIGHP_INT))
typedef highp_ivec1 ivec1;
#elif(defined(GLM_PRECISION_MEDIUMP_INT))