diff --git a/include/Nazara/Math/Basic.hpp b/include/Nazara/Math/Basic.hpp index 50cfdba19..74e120e71 100644 --- a/include/Nazara/Math/Basic.hpp +++ b/include/Nazara/Math/Basic.hpp @@ -21,9 +21,9 @@ #endif template T NzApproach(T value, T objective, T increment); -template T NzClamp(T value, T min, T max); -template T NzDegrees(T degrees); -template T NzDegreeToRadian(T degrees); +template constexpr T NzClamp(T value, T min, T max); +template constexpr T NzDegrees(T degrees); +template constexpr T NzDegreeToRadian(T degrees); template T NzMultiplyAdd(T x, T y, T z); unsigned int NzIntegralPow(unsigned int base, unsigned int exponent); unsigned int NzGetNearestPowerOfTwo(unsigned int number); diff --git a/include/Nazara/Math/Basic.inl b/include/Nazara/Math/Basic.inl index 0da49de7b..a90c291d8 100644 --- a/include/Nazara/Math/Basic.inl +++ b/include/Nazara/Math/Basic.inl @@ -15,6 +15,7 @@ template T NzApproach(T value, T objective, T increment) { + ///TODO: Marquer comme constexpr en C++14 if (value < objective) return std::min(value + increment, objective); else if (value > objective) @@ -24,13 +25,13 @@ T NzApproach(T value, T objective, T increment) } template -T NzClamp(T value, T min, T max) +constexpr T NzClamp(T value, T min, T max) { return std::max(std::min(value, max), min); } template -T NzDegrees(T degrees) +constexpr T NzDegrees(T degrees) { #if NAZARA_MATH_ANGLE_RADIAN return NzDegreeToRadian(degrees); @@ -40,7 +41,7 @@ T NzDegrees(T degrees) } template -T NzDegreeToRadian(T degrees) +constexpr T NzDegreeToRadian(T degrees) { return degrees * F(M_PI/180.0); } @@ -77,6 +78,7 @@ inline long double NzMultiplyAdd(long double x, long double y, long double z) inline unsigned int NzIntegralPow(unsigned int base, unsigned int exponent) { + ///TODO: Marquer comme constexpr en C++14 unsigned int r = 1; for (unsigned int i = 0; i < exponent; ++i) r *= base; @@ -86,6 +88,7 @@ inline unsigned int NzIntegralPow(unsigned int base, unsigned int exponent) inline unsigned int NzGetNearestPowerOfTwo(unsigned int number) { + ///TODO: Marquer comme constexpr en C++14 unsigned int x = 1; // Tant que x est plus petit que n, on décale ses bits vers la gauche, ce qui revient à multiplier par deux while(x <= number) @@ -96,6 +99,7 @@ inline unsigned int NzGetNearestPowerOfTwo(unsigned int number) inline unsigned int NzGetNumberLength(signed char number) { + ///TODO: Marquer comme constexpr en C++14 // Le standard définit le char comme étant codé sur un octet static_assert(sizeof(number) == 1, "Signed char must be one byte-sized"); @@ -115,6 +119,7 @@ inline unsigned int NzGetNumberLength(signed char number) inline unsigned int NzGetNumberLength(unsigned char number) { + ///TODO: Marquer comme constexpr en C++14 // Le standard définit le char comme étant codé sur un octet static_assert(sizeof(number) == 1, "Unsigned char must be one byte-sized"); diff --git a/src/Nazara/Utility/Algorithm.cpp b/src/Nazara/Utility/Algorithm.cpp index 12cc5cbee..e7559a3b9 100644 --- a/src/Nazara/Utility/Algorithm.cpp +++ b/src/Nazara/Utility/Algorithm.cpp @@ -783,7 +783,7 @@ void NzGenerateBox(const NzVector3f& lengths, const NzVector3ui& subdivision, co void NzGenerateCone(float length, float radius, unsigned int subdivision, const NzMatrix4f& matrix, const NzRectf& textureCoords, NzMeshVertex* vertices, NzIndexIterator indices, NzBoxf* aabb, unsigned int indexOffset) { - const float round = 2.f*static_cast(M_PI); + constexpr float round = 2.f*static_cast(M_PI); float delta = round/subdivision; vertices->position = matrix.GetTranslation(); // matrix.Transform(NzVector3f(0.f));