remove ostd::min/max/clamp

master
Daniel Kolesa 2017-02-18 17:54:51 +01:00
parent 468ddd02e2
commit c22f8e4b7a
2 changed files with 10 additions and 58 deletions

View File

@ -11,6 +11,7 @@
#include <utility>
#include <functional>
#include <type_traits>
#include <algorithm>
#include "ostd/range.hh"
@ -180,29 +181,11 @@ inline auto sort() {
/* min/max(_element) */
template<typename T>
inline T const &min(T const &a, T const &b) {
return (a < b) ? a : b;
}
template<typename T, typename C>
inline T const &min_cmp(T const &a, T const &b, C compare) {
return compare(a, b) ? a : b;
}
template<typename T>
inline T const &max(T const &a, T const &b) {
return (a < b) ? b : a;
}
template<typename T, typename C>
inline T const &max_cmp(T const &a, T const &b, C compare) {
return compare(a, b) ? b : a;
}
template<typename R>
inline R min_element(R range) {
R r = range;
for (; !range.empty(); range.pop_front()) {
if (ostd::min(r.front(), range.front()) == range.front()) {
if (std::min(r.front(), range.front()) == range.front()) {
r = range;
}
}
@ -212,7 +195,7 @@ template<typename R, typename C>
inline R min_element_cmp(R range, C compare) {
R r = range;
for (; !range.empty(); range.pop_front()) {
if (ostd::min_cmp(r.front(), range.front(), compare) == range.front()) {
if (std::min(r.front(), range.front(), compare) == range.front()) {
r = range;
}
}
@ -236,7 +219,7 @@ template<typename R>
inline R max_element(R range) {
R r = range;
for (; !range.empty(); range.pop_front()) {
if (ostd::max(r.front(), range.front()) == range.front()) {
if (std::max(r.front(), range.front()) == range.front()) {
r = range;
}
}
@ -246,7 +229,7 @@ template<typename R, typename C>
inline R max_element_cmp(R range, C compare) {
R r = range;
for (; !range.empty(); range.pop_front()) {
if (ostd::max_cmp(r.front(), range.front(), compare) == range.front()) {
if (std::max(r.front(), range.front(), compare) == range.front()) {
r = range;
}
}
@ -266,37 +249,6 @@ inline auto max_element_cmp(C &&compare) {
};
}
template<typename T>
inline T min(std::initializer_list<T> il) {
return ostd::min_element(ostd::iter(il)).front();
}
template<typename T, typename C>
inline T min_cmp(std::initializer_list<T> il, C compare) {
return ostd::min_element_cmp(ostd::iter(il), compare).front();
}
template<typename T>
inline T max(std::initializer_list<T> il) {
return ostd::max_element(ostd::iter(il)).front();
}
template<typename T, typename C>
inline T max_cmp(std::initializer_list<T> il, C compare) {
return ostd::max_element_cmp(ostd::iter(il), compare).front();
}
/* clamp */
template<typename T, typename U>
inline T clamp(T const &v, U const &lo, U const &hi) {
return ostd::max(T(lo), ostd::min(v, T(hi)));
}
template<typename T, typename U, typename C>
inline T clamp(T const &v, U const &lo, U const &hi, C compare) {
return ostd::max_cmp(T(lo), ostd::min_cmp(v, T(hi), compare), compare);
}
/* lexicographical compare */
template<typename R1, typename R2>

View File

@ -165,7 +165,7 @@ public:
if (!s1 || !s2) {
goto diffsize;
}
if ((ret = TR::compare(data(), s.data(), ostd::min(s1, s2)))) {
if ((ret = TR::compare(data(), s.data(), std::min(s1, s2)))) {
return ret;
}
diffsize:
@ -174,7 +174,7 @@ diffsize:
int case_compare(basic_char_range<T const> s) const {
size_t s1 = size(), s2 = s.size();
for (size_t i = 0, ms = ostd::min(s1, s2); i < ms; ++i) {
for (size_t i = 0, ms = std::min(s1, s2); i < ms; ++i) {
int d = toupper(p_beg[i]) - toupper(s[i]);
if (d) {
return d;
@ -185,11 +185,11 @@ diffsize:
template<typename R>
std::enable_if_t<is_output_range<R>, size_t> copy(R &&orange, size_t n = -1) {
return range_put_n(orange, data(), ostd::min(n, size()));
return range_put_n(orange, data(), std::min(n, size()));
}
size_t copy(std::remove_cv_t<T> *p, size_t n = -1) {
size_t c = ostd::min(n, size());
size_t c = std::min(n, size());
TR::copy(p, data(), c);
return c;
}
@ -205,7 +205,7 @@ private:
template<typename T, typename TR>
inline size_t range_put_n(basic_char_range<T, TR> &range, T const *p, size_t n) {
size_t an = ostd::min(n, range.size());
size_t an = std::min(n, range.size());
TR::copy(range.data(), p, an);
range.pop_front_n(an);
return an;