diff --git a/libs/main/core/pibase.h b/libs/main/core/pibase.h index e2972ce9..ed2cfb17 100644 --- a/libs/main/core/pibase.h +++ b/libs/main/core/pibase.h @@ -243,40 +243,15 @@ inline constexpr T piAbs(const T & v) { return (v >= T(0) ? v : -v); } -//! \~\brief -//! \~english Templated function return minimum of two values -//! \~russian Шаблонный метод, возвращающий минимум из двух значений -//! \~\details -//! \~english -//! There are some macros: -//! - \c piMins for "short" -//! - \c piMini for "int" -//! - \c piMinl for "long" -//! - \c piMinll for "llong" -//! - \c piMinf for "float" -//! - \c piMind for "double" -//! -//! Example: -//! \snippet piincludes.cpp min2 -//! \~russian -//! Есть несколько макросов: -//! - \c piMins для "short" -//! - \c piMini для "int" -//! - \c piMinl для "long" -//! - \c piMinll для "llong" -//! - \c piMinf для "float" -//! - \c piMind для "double" -//! -//! Пример: -//! \snippet piincludes.cpp min2 + template -inline constexpr T piMin(const T & f, const T & s) { +constexpr T piMin(const T & f, const T & s) { return ((f > s) ? s : f); } //! \~\brief -//! \~english Templated function return minimum of tree values -//! \~russian Шаблонный метод, возвращающий минимум из трех значений +//! \~english Templated function return minimum of several values +//! \~russian Шаблонный метод, возвращающий минимум из нескольких значений //! \~\details //! \~english //! There are some macros: @@ -288,7 +263,7 @@ inline constexpr T piMin(const T & f, const T & s) { //! - \c piMind for "double" //! //! Example: -//! \snippet piincludes.cpp min3 +//! \snippet piincludes.cpp min2 //! \~russian //! Есть несколько макросов: //! - \c piMins для "short" @@ -299,46 +274,21 @@ inline constexpr T piMin(const T & f, const T & s) { //! - \c piMind для "double" //! //! Пример: -//! \snippet piincludes.cpp min3 -template -inline constexpr T piMin(const T & f, const T & s, const T & t) { - return ((f < s && f < t) ? f : ((s < t) ? s : t)); +//! \snippet piincludes.cpp min2 +template +constexpr T piMin(const T & f, const T & s, const Args &... args) { + return piMin(piMin(f, s), args...); } -//! \~\brief -//! \~english Templated function return maximum of two values -//! \~russian Шаблонный метод, возвращающий максимум из двух значений -//! \~\details -//! \~english -//! There are some macros: -//! - \c piMaxs for "short" -//! - \c piMaxi for "int" -//! - \c piMaxl for "long" -//! - \c piMaxll for "llong" -//! - \c piMaxf for "float" -//! - \c piMaxd for "double" -//! -//! Example: -//! \snippet piincludes.cpp max2 -//! \~russian -//! Есть несколько макросов: -//! - \c piMaxs для "short" -//! - \c piMaxi для "int" -//! - \c piMaxl для "long" -//! - \c piMaxll для "llong" -//! - \c piMaxf для "float" -//! - \c piMaxd для "double" -//! -//! Пример: -//! \snippet piincludes.cpp max2 + template -inline constexpr T piMax(const T & f, const T & s) { +constexpr T piMax(const T & f, const T & s) { return ((f < s) ? s : f); } //! \~\brief -//! \~english Templated function return maximum of tree values -//! \~russian Шаблонный метод, возвращающий максимум из трех значений +//! \~english Templated function return maximum of several values +//! \~russian Шаблонный метод, возвращающий максимум из нескольких значений //! \~\details //! \~english //! There are some macros: @@ -350,7 +300,7 @@ inline constexpr T piMax(const T & f, const T & s) { //! - \c piMaxd for "double" //! //! Example: -//! \snippet piincludes.cpp max3 +//! \snippet piincludes.cpp max2 //! \~russian //! Есть несколько макросов: //! - \c piMaxs для "short" @@ -361,12 +311,13 @@ inline constexpr T piMax(const T & f, const T & s) { //! - \c piMaxd для "double" //! //! Пример: -//! \snippet piincludes.cpp max3 -template -inline constexpr T piMax(const T & f, const T & s, const T & t) { - return ((f > s && f > t) ? f : ((s > t) ? s : t)); +//! \snippet piincludes.cpp max2 +template +constexpr T piMax(const T & f, const T & s, const Args &... args) { + return piMax(piMax(f, s), args...); } + //! \~\brief //! \~english Templated function return clamped value //! \~russian Шаблонный метод, возвращающий ограниченное значение