L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
minmax
1
// vi:set ft=cpp: -*- Mode: C++ -*-
2
/*
3
* (c) 2008-2009 Alexander Warg <warg@os.inf.tu-dresden.de>
4
* economic rights: Technische Universität Dresden (Germany)
5
*
6
* License: see LICENSE.spdx (in this directory or the directories above)
7
*/
8
#pragma once
9
10
#include "type_traits"
11
16
namespace
cxx
17
{
18
// trivial, used to terminate the variadic recursion
19
template
<
typename
A>
20
constexpr
A
const
&
21
min(A
const
&a)
22
{
return
a; }
23
34
template
<
typename
A,
typename
...ARGS>
35
constexpr
A
const
&
36
min(A
const
&a1, A
const
&a2, ARGS
const
&...a)
37
{
38
return
min((a1 <= a2) ? a1 : a2, a...);
39
}
40
51
template
<
typename
A,
typename
...ARGS>
52
constexpr
A
const
&
53
min(cxx::identity_t<A>
const
&a1,
54
cxx::identity_t<A>
const
&a2,
55
ARGS
const
&...a)
56
{
57
return
min<A>((a1 <= a2) ? a1 : a2, a...);
58
}
59
60
// trivial, used to terminate the variadic recursion
61
template
<
typename
A>
62
constexpr
A
const
&
63
max(A
const
&a)
64
{
return
a; }
65
76
template
<
typename
A,
typename
...ARGS>
77
constexpr
A
const
&
78
max(A
const
&a1, A
const
&a2, ARGS
const
&...a)
79
{
return
max((a1 >= a2) ? a1 : a2, a...); }
80
91
template
<
typename
A,
typename
...ARGS>
92
constexpr
A
const
&
93
max(cxx::identity_t<A>
const
&a1,
94
cxx::identity_t<A>
const
&a2,
95
ARGS
const
&...a)
96
{
97
return
max<A>((a1 >= a2) ? a1 : a2, a...);
98
}
99
107
template
<
typename
T1 >
108
inline
109
T1
clamp
(T1 v, T1 lo, T1 hi)
110
{
return
min(hi, max(lo, v)); }
111
};
cxx::clamp
T1 clamp(T1 v, T1 lo, T1 hi)
Limit v to the range given by lo and hi.
Definition
minmax:109
cxx
Our C++ library.
Definition
arith:11
l4
cxx
minmax
Generated on Fri May 23 2025 13:40:51 for L4Re Operating System Framework by
1.9.8