Evo C++ Library v0.5.1
alg.h
Go to the documentation of this file.
1 // Evo C++ Library
2 /* Copyright 2019 Justin Crowell
3 Distributed under the BSD 2-Clause License -- see included file LICENSE.txt for details.
4 */
6 
7 #pragma once
8 #ifndef INCL_evo_alg_h
9 #define INCL_evo_alg_h
10 
11 namespace evo {
16 
18 
26 template<class T> inline T& min(T& a, T&b)
27  { return (a<b ? a : b); }
28 
37 template<class T> inline T& min(T& a, T& b, T& c)
38  { return (a<b ? (a<c ? a : c) : (b<c ? b : c)); }
39 
47 template<class T> inline T& max(T& a, T& b)
48  { return (a<b ? b : a); }
49 
58 template<class T> inline T& max(T& a, T& b, T& c)
59  { return (a<b ? (b<c ? c : b) : (a<c ? c : a)); }
60 
61 template<class T> inline T& applyminmax(T& val, T& min, T& max)
62  { if (val < min) val = min; }
63 
64 template<class T> inline T& applymin(T& val, T& min)
65  { if (val < min) val = min; }
66 
67 template<class T> inline T& applymax(T& val, T& max)
68  { if (val > max) val = max; }
69 
70 template<class T> inline T& constrain(T& val, T& min, T& max)
71  { return ( val<min ? min : (val>max?max:val) ); }
72 
73 template<class T> inline T& constrainmin(T& val, T& min)
74  { return ( val<min ? min : val ); }
75 
76 template<class T> inline T& constrainmax(T& val, T& max)
77  { return ( val>max ? max : val ); }
78 
79 template<class T> inline bool validate(T& val, T& min, T& max)
80  { return (val >= min && val <= max); }
81 
82 template<class T> inline T& validate(T& val, T& min, T& max, T& invalid)
83  { return ( (val<min || val>max) ? invalid : val ); }
84 
85 template<class T> inline T first(T val1, T val2)
86  { return ( val1 ? val1 : val2 ); }
87 
88 template<class T> inline T first(T val1, T val2, T val3)
89  { return ( val1 ? val1 : (val2?val2:val3) ); }
90 
92 
93 }
94 #endif
T & max(T &a, T &b)
Returns highest of given values.
Definition: alg.h:47
T & constrain(T &val, T &min, T &max)
Definition: alg.h:70
T first(T val1, T val2)
Definition: alg.h:85
bool validate(T &val, T &min, T &max)
Definition: alg.h:79
T & applymin(T &val, T &min)
Definition: alg.h:64
Evo C++ Library namespace.
Definition: alg.h:11
T & constrainmin(T &val, T &min)
Definition: alg.h:73
T & constrainmax(T &val, T &max)
Definition: alg.h:76
T & applyminmax(T &val, T &min, T &max)
Definition: alg.h:61
T & applymax(T &val, T &max)
Definition: alg.h:67
T & min(T &a, T &b)
Returns lowest of given values.
Definition: alg.h:26