diff --git a/glm/detail/func_trigonometric.hpp b/glm/detail/func_trigonometric.hpp index d43961ba..24434977 100644 --- a/glm/detail/func_trigonometric.hpp +++ b/glm/detail/func_trigonometric.hpp @@ -58,7 +58,7 @@ namespace glm /// @see GLSL radians man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template class vecType> - GLM_FUNC_DECL vecType radians(vecType const & degrees); + GLM_FUNC_DECL GLM_CONSTEXPR vecType radians(vecType const & degrees); /// Converts radians to degrees and returns the result. /// @@ -67,7 +67,7 @@ namespace glm /// @see GLSL degrees man page /// @see GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions template class vecType> - GLM_FUNC_DECL vecType degrees(vecType const & radians); + GLM_FUNC_DECL GLM_CONSTEXPR vecType degrees(vecType const & radians); /// The standard trigonometric sine function. /// The values returned by this function will range from [-1, 1]. diff --git a/glm/detail/func_trigonometric.inl b/glm/detail/func_trigonometric.inl index a7105250..ad738499 100644 --- a/glm/detail/func_trigonometric.inl +++ b/glm/detail/func_trigonometric.inl @@ -38,7 +38,7 @@ namespace glm { // radians template - GLM_FUNC_QUALIFIER genType radians(genType degrees) + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType radians(genType degrees) { GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'radians' only accept floating-point input"); @@ -46,7 +46,7 @@ namespace glm } template class vecType> - GLM_FUNC_QUALIFIER vecType radians(vecType const & v) + GLM_FUNC_QUALIFIER GLM_CONSTEXPR vecType radians(vecType const & v) { return detail::functor1::call(radians, v); } diff --git a/glm/gtc/constants.hpp b/glm/gtc/constants.hpp index ae1fb622..786467ad 100644 --- a/glm/gtc/constants.hpp +++ b/glm/gtc/constants.hpp @@ -57,147 +57,147 @@ namespace glm /// Return the epsilon constant for floating point types. /// @see gtc_constants template - GLM_FUNC_DECL genType epsilon(); + GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon(); /// Return 0. /// @see gtc_constants template - GLM_FUNC_DECL genType zero(); + GLM_FUNC_DECL GLM_CONSTEXPR genType zero(); /// Return 1. /// @see gtc_constants template - GLM_FUNC_DECL genType one(); + GLM_FUNC_DECL GLM_CONSTEXPR genType one(); /// Return the pi constant. /// @see gtc_constants template - GLM_FUNC_DECL genType pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType pi(); /// Return pi * 2. /// @see gtc_constants template - GLM_FUNC_DECL genType two_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType two_pi(); /// Return square root of pi. /// @see gtc_constants template - GLM_FUNC_DECL genType root_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_pi(); /// Return pi / 2. /// @see gtc_constants template - GLM_FUNC_DECL genType half_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType half_pi(); /// Return pi / 2 * 3. /// @see gtc_constants template - GLM_FUNC_DECL genType three_over_two_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi(); /// Return pi / 4. /// @see gtc_constants template - GLM_FUNC_DECL genType quarter_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi(); /// Return 1 / pi. /// @see gtc_constants template - GLM_FUNC_DECL genType one_over_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi(); /// Return 1 / (pi * 2). /// @see gtc_constants template - GLM_FUNC_DECL genType one_over_two_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi(); /// Return 2 / pi. /// @see gtc_constants template - GLM_FUNC_DECL genType two_over_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi(); /// Return 4 / pi. /// @see gtc_constants template - GLM_FUNC_DECL genType four_over_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi(); /// Return 2 / sqrt(pi). /// @see gtc_constants template - GLM_FUNC_DECL genType two_over_root_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi(); /// Return 1 / sqrt(2). /// @see gtc_constants template - GLM_FUNC_DECL genType one_over_root_two(); + GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two(); /// Return sqrt(pi / 2). /// @see gtc_constants template - GLM_FUNC_DECL genType root_half_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi(); /// Return sqrt(2 * pi). /// @see gtc_constants template - GLM_FUNC_DECL genType root_two_pi(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi(); /// Return sqrt(ln(4)). /// @see gtc_constants template - GLM_FUNC_DECL genType root_ln_four(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four(); /// Return e constant. /// @see gtc_constants template - GLM_FUNC_DECL genType e(); + GLM_FUNC_DECL GLM_CONSTEXPR genType e(); /// Return Euler's constant. /// @see gtc_constants template - GLM_FUNC_DECL genType euler(); + GLM_FUNC_DECL GLM_CONSTEXPR genType euler(); /// Return sqrt(2). /// @see gtc_constants template - GLM_FUNC_DECL genType root_two(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_two(); /// Return sqrt(3). /// @see gtc_constants template - GLM_FUNC_DECL genType root_three(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_three(); /// Return sqrt(5). /// @see gtc_constants template - GLM_FUNC_DECL genType root_five(); + GLM_FUNC_DECL GLM_CONSTEXPR genType root_five(); /// Return ln(2). /// @see gtc_constants template - GLM_FUNC_DECL genType ln_two(); + GLM_FUNC_DECL GLM_CONSTEXPR genType ln_two(); /// Return ln(10). /// @see gtc_constants template - GLM_FUNC_DECL genType ln_ten(); + GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten(); /// Return ln(ln(2)). /// @see gtc_constants template - GLM_FUNC_DECL genType ln_ln_two(); + GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two(); /// Return 1 / 3. /// @see gtc_constants template - GLM_FUNC_DECL genType third(); + GLM_FUNC_DECL GLM_CONSTEXPR genType third(); /// Return 2 / 3. /// @see gtc_constants template - GLM_FUNC_DECL genType two_thirds(); + GLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds(); /// Return the golden ratio constant. /// @see gtc_constants template - GLM_FUNC_DECL genType golden_ratio(); + GLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio(); /// @} } //namespace glm diff --git a/glm/gtc/constants.inl b/glm/gtc/constants.inl index a5de153b..0023f449 100644 --- a/glm/gtc/constants.inl +++ b/glm/gtc/constants.inl @@ -35,151 +35,151 @@ namespace glm { template - GLM_FUNC_QUALIFIER genType epsilon() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType epsilon() { return std::numeric_limits::epsilon(); } template - GLM_FUNC_QUALIFIER genType zero() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType zero() { return genType(0); } template - GLM_FUNC_QUALIFIER genType one() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one() { return genType(1); } template - GLM_FUNC_QUALIFIER genType pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType pi() { return genType(3.14159265358979323846264338327950288); } template - GLM_FUNC_QUALIFIER genType two_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_pi() { return genType(6.28318530717958647692528676655900576); } template - GLM_FUNC_QUALIFIER genType root_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_pi() { return genType(1.772453850905516027); } template - GLM_FUNC_QUALIFIER genType half_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType half_pi() { return genType(1.57079632679489661923132169163975144); } template - GLM_FUNC_QUALIFIER genType three_over_two_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType three_over_two_pi() { return genType(4.71238898038468985769396507491925432); } template - GLM_FUNC_QUALIFIER genType quarter_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType quarter_pi() { return genType(0.785398163397448309615660845819875721); } template - GLM_FUNC_QUALIFIER genType one_over_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_pi() { return genType(0.318309886183790671537767526745028724); } template - GLM_FUNC_QUALIFIER genType one_over_two_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_two_pi() { return genType(0.159154943091895335768883763372514362); } template - GLM_FUNC_QUALIFIER genType two_over_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_over_pi() { return genType(0.636619772367581343075535053490057448); } template - GLM_FUNC_QUALIFIER genType four_over_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType four_over_pi() { return genType(1.273239544735162686151070106980114898); } template - GLM_FUNC_QUALIFIER genType two_over_root_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_over_root_pi() { return genType(1.12837916709551257389615890312154517); } template - GLM_FUNC_QUALIFIER genType one_over_root_two() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_root_two() { return genType(0.707106781186547524400844362104849039); } template - GLM_FUNC_QUALIFIER genType root_half_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_half_pi() { return genType(1.253314137315500251); } template - GLM_FUNC_QUALIFIER genType root_two_pi() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_two_pi() { return genType(2.506628274631000502); } template - GLM_FUNC_QUALIFIER genType root_ln_four() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_ln_four() { return genType(1.17741002251547469); } template - GLM_FUNC_QUALIFIER genType e() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType e() { return genType(2.71828182845904523536); } template - GLM_FUNC_QUALIFIER genType euler() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType euler() { return genType(0.577215664901532860606); } template - GLM_FUNC_QUALIFIER genType root_two() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_two() { return genType(1.41421356237309504880168872420969808); } template - GLM_FUNC_QUALIFIER genType root_three() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_three() { return genType(1.73205080756887729352744634150587236); } template - GLM_FUNC_QUALIFIER genType root_five() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_five() { return genType(2.23606797749978969640917366873127623); } template - GLM_FUNC_QUALIFIER genType ln_two() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType ln_two() { return genType(0.693147180559945309417232121458176568); } template - GLM_FUNC_QUALIFIER genType ln_ten() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType ln_ten() { return genType(2.30258509299404568401799145468436421); } @@ -191,19 +191,19 @@ namespace glm } template - GLM_FUNC_QUALIFIER genType third() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType third() { return genType(0.3333333333333333333333333333333333333333); } template - GLM_FUNC_QUALIFIER genType two_thirds() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_thirds() { return genType(0.666666666666666666666666666666666666667); } template - GLM_FUNC_QUALIFIER genType golden_ratio() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType golden_ratio() { return genType(1.61803398874989484820458683436563811); } diff --git a/readme.md b/readme.md index 9e06527e..c1795df9 100644 --- a/readme.md +++ b/readme.md @@ -51,6 +51,9 @@ glm::mat4 camera(float Translate, glm::vec2 const & Rotate) ## Release notes #### [GLM 0.9.7.1](https://github.com/g-truc/glm/releases/latest) - 2015-XX-XX +##### Improvements: +- Improved constexpr for constant functions coverage #198 + ##### Fixes: - Fixed strict alignment warnings #235 #370 - Fixed link errors on compilers not supported default function #377