KiCad PCB EDA Suite
Loading...
Searching...
No Matches
minoptmax.h
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <https://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef MINOPTMAX_PROTO_H
21
#define MINOPTMAX_PROTO_H
22
23
#include <limits>
24
25
template
<
class
T=
int
>
26
class
MINOPTMAX
27
{
28
public
:
29
T
Min
()
const
{
return
m_hasMin
?
m_min
: 0; };
30
T
Max
()
const
{
return
m_hasMax
?
m_max
: std::numeric_limits<T>::max(); };
31
T
Opt
()
const
{
return
m_hasOpt
?
m_opt
:
Min
(); };
32
T
PinnedOpt
()
const
{
return
std::max<T>(
Min
(), std::min<T>(
Max
(),
Opt
() ) ) ; }
33
35
T
PinnedOpt
(
T
aDefault )
const
{
return
std::max<T>(
Min
(), std::min<T>(
Max
(),
m_hasOpt
?
m_opt
: aDefault ) ); }
36
37
bool
HasMin
()
const
{
return
m_hasMin
; }
38
bool
HasMax
()
const
{
return
m_hasMax
; }
39
bool
HasOpt
()
const
{
return
m_hasOpt
; }
40
41
void
SetMin
(
T
v ) {
m_isNull
=
false
;
m_min
= v;
m_hasMin
=
true
; }
42
void
SetMax
(
T
v ) {
m_isNull
=
false
;
m_max
= v;
m_hasMax
=
true
; }
43
void
SetOpt
(
T
v ) {
m_isNull
=
false
;
m_opt
= v;
m_hasOpt
=
true
; }
44
45
bool
IsNull
()
const
{
return
m_isNull
; }
46
47
bool
Matches
(
const
T
v )
const
48
{
49
if
(
m_hasMin
&& v <
m_min
)
50
return
false
;
51
if
(
m_hasMax
&& v >
m_max
)
52
return
false
;
53
54
return
true
;
55
}
56
57
private
:
58
bool
m_isNull
=
true
;
59
T
m_min
{};
60
T
m_opt
{};
61
T
m_max
{};
62
bool
m_hasMin
=
false
;
63
bool
m_hasOpt
=
false
;
64
bool
m_hasMax
=
false
;
65
};
66
67
#endif
MINOPTMAX
Definition
minoptmax.h:27
MINOPTMAX::Min
T Min() const
Definition
minoptmax.h:29
MINOPTMAX< int >::m_isNull
bool m_isNull
Definition
minoptmax.h:58
MINOPTMAX< int >::m_hasMin
bool m_hasMin
Definition
minoptmax.h:62
MINOPTMAX::SetMin
void SetMin(T v)
Definition
minoptmax.h:41
MINOPTMAX::HasMax
bool HasMax() const
Definition
minoptmax.h:38
MINOPTMAX::Matches
bool Matches(const T v) const
Definition
minoptmax.h:47
MINOPTMAX< int >::m_max
int m_max
Definition
minoptmax.h:61
MINOPTMAX::PinnedOpt
T PinnedOpt() const
Definition
minoptmax.h:32
MINOPTMAX::SetOpt
void SetOpt(T v)
Definition
minoptmax.h:43
MINOPTMAX::HasMin
bool HasMin() const
Definition
minoptmax.h:37
MINOPTMAX::SetMax
void SetMax(T v)
Definition
minoptmax.h:42
MINOPTMAX::Max
T Max() const
Definition
minoptmax.h:30
MINOPTMAX< int >::m_hasMax
bool m_hasMax
Definition
minoptmax.h:64
MINOPTMAX::IsNull
bool IsNull() const
Definition
minoptmax.h:45
MINOPTMAX< int >::m_opt
int m_opt
Definition
minoptmax.h:60
MINOPTMAX< int >::m_hasOpt
bool m_hasOpt
Definition
minoptmax.h:63
MINOPTMAX::Opt
T Opt() const
Definition
minoptmax.h:31
MINOPTMAX::PinnedOpt
T PinnedOpt(T aDefault) const
Like PinnedOpt(), but preferring aDefault when there is no opt value.
Definition
minoptmax.h:35
MINOPTMAX< int >::m_min
int m_min
Definition
minoptmax.h:59
MINOPTMAX::HasOpt
bool HasOpt() const
Definition
minoptmax.h:39
TRANSLINE_PARAMETERS::T
@ T
Definition
transline_calculation_base.h:39
src
libs
core
include
core
minoptmax.h
Generated on Wed Oct 7 2026 00:05:59 for KiCad PCB EDA Suite by
1.13.2