remove ostd::min/max/clamp
parent
468ddd02e2
commit
c22f8e4b7a
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue