From dae12f12386b47b60e53865665e979021390e517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 2 May 2016 16:02:41 +0200 Subject: [PATCH] mathlib: replace math::{min,max,constrain} with template methods --- src/lib/mathlib/math/Limits.cpp | 76 --------------------------------- src/lib/mathlib/math/Limits.hpp | 46 ++++++++------------ 2 files changed, 17 insertions(+), 105 deletions(-) diff --git a/src/lib/mathlib/math/Limits.cpp b/src/lib/mathlib/math/Limits.cpp index 4b1273c7a1..114929ba17 100644 --- a/src/lib/mathlib/math/Limits.cpp +++ b/src/lib/mathlib/math/Limits.cpp @@ -51,82 +51,6 @@ namespace math #define M_PI_F 3.14159265358979323846f #endif -float __EXPORT min(float val1, float val2) -{ - return (val1 < val2) ? val1 : val2; -} - -int __EXPORT min(int val1, int val2) -{ - return (val1 < val2) ? val1 : val2; -} - -unsigned __EXPORT min(unsigned val1, unsigned val2) -{ - return (val1 < val2) ? val1 : val2; -} - -uint64_t __EXPORT min(uint64_t val1, uint64_t val2) -{ - return (val1 < val2) ? val1 : val2; -} - -double __EXPORT min(double val1, double val2) -{ - return (val1 < val2) ? val1 : val2; -} - -float __EXPORT max(float val1, float val2) -{ - return (val1 > val2) ? val1 : val2; -} - -int __EXPORT max(int val1, int val2) -{ - return (val1 > val2) ? val1 : val2; -} - -unsigned __EXPORT max(unsigned val1, unsigned val2) -{ - return (val1 > val2) ? val1 : val2; -} - -uint64_t __EXPORT max(uint64_t val1, uint64_t val2) -{ - return (val1 > val2) ? val1 : val2; -} - -double __EXPORT max(double val1, double val2) -{ - return (val1 > val2) ? val1 : val2; -} - - -float __EXPORT constrain(float val, float min, float max) -{ - return (val < min) ? min : ((val > max) ? max : val); -} - -int __EXPORT constrain(int val, int min, int max) -{ - return (val < min) ? min : ((val > max) ? max : val); -} - -unsigned __EXPORT constrain(unsigned val, unsigned min, unsigned max) -{ - return (val < min) ? min : ((val > max) ? max : val); -} - -uint64_t __EXPORT constrain(uint64_t val, uint64_t min, uint64_t max) -{ - return (val < min) ? min : ((val > max) ? max : val); -} - -double __EXPORT constrain(double val, double min, double max) -{ - return (val < min) ? min : ((val > max) ? max : val); -} - float __EXPORT radians(float degrees) { return (degrees / 180.0f) * M_PI_F; diff --git a/src/lib/mathlib/math/Limits.hpp b/src/lib/mathlib/math/Limits.hpp index 7560406e05..6215b8f955 100644 --- a/src/lib/mathlib/math/Limits.hpp +++ b/src/lib/mathlib/math/Limits.hpp @@ -50,40 +50,28 @@ # define UINT64_C(c) c ## ULL # endif #endif -namespace math -{ - - -float __EXPORT min(float val1, float val2); - -int __EXPORT min(int val1, int val2); - -unsigned __EXPORT min(unsigned val1, unsigned val2); - -uint64_t __EXPORT min(uint64_t val1, uint64_t val2); - -double __EXPORT min(double val1, double val2); - -float __EXPORT max(float val1, float val2); - -int __EXPORT max(int val1, int val2); - -unsigned __EXPORT max(unsigned val1, unsigned val2); -uint64_t __EXPORT max(uint64_t val1, uint64_t val2); -double __EXPORT max(double val1, double val2); - - -float __EXPORT constrain(float val, float min, float max); - -int __EXPORT constrain(int val, int min, int max); +namespace math +{ -unsigned __EXPORT constrain(unsigned val, unsigned min, unsigned max); +template +inline const _Tp &min(const _Tp &a, const _Tp &b) +{ + return (a < b) ? a : b; +} -uint64_t __EXPORT constrain(uint64_t val, uint64_t min, uint64_t max); +template +inline const _Tp &max(const _Tp &a, const _Tp &b) +{ + return (a > b) ? a : b; +} -double __EXPORT constrain(double val, double min, double max); +template +inline const _Tp &constrain(const _Tp &val, const _Tp &min_val, const _Tp &max_val) +{ + return (val < min_val) ? min_val : ((val > max_val) ? max_val : val); +} float __EXPORT radians(float degrees);