codac 2.0.0
Loading...
Searching...
No Matches
codac2_BoolInterval.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include <ostream>
13
14namespace codac2
15{
25 enum class BoolInterval
26 {
27 FALSE = 0x01,
28 TRUE = 0x02,
30 EMPTY = 0x00,
32 UNKNOWN = 0x01 | 0x02
33 };
34
44 constexpr BoolInterval operator&(BoolInterval x, BoolInterval y)
45 {
46 return static_cast<BoolInterval>(static_cast<int>(x) & static_cast<int>(y));
47 }
48
58 constexpr BoolInterval operator|(BoolInterval x, BoolInterval y)
59 {
60 return static_cast<BoolInterval>(static_cast<int>(x) | static_cast<int>(y));
61 }
62
74 {
75 if((x == BoolInterval::EMPTY) || (y == BoolInterval::EMPTY))
77 if((x == BoolInterval::FALSE) || (y == BoolInterval::FALSE))
78 return BoolInterval::FALSE;
81 return BoolInterval::TRUE;
82 }
83
95 {
96 if((x == BoolInterval::EMPTY) || (y == BoolInterval::EMPTY))
98 if((x == BoolInterval::TRUE) || (y == BoolInterval::TRUE))
99 return BoolInterval::TRUE;
102 return BoolInterval::FALSE;
103 }
104
112 {
113 switch(x)
114 {
115 case BoolInterval::FALSE:
116 return BoolInterval::TRUE;
117 case BoolInterval::TRUE:
118 return BoolInterval::FALSE;
119 default:
120 return x;
121 }
122 }
123
131 inline std::ostream& operator<<(std::ostream& os, const BoolInterval& x)
132 {
133 switch(x)
134 {
136 os << "[ empty ]";
137 break;
138 case BoolInterval::FALSE:
139 os << "[ false ]";
140 break;
141 case BoolInterval::TRUE:
142 os << "[ true ]";
143 break;
145 os << "[ true, false ]";
146 break;
147 }
148 return os;
149 }
150}
Definition codac2_OctaSym.h:21
BoolInterval operator~(BoolInterval x)
Returns the complementary of a BoolInterval.
Definition codac2_BoolInterval.h:111
constexpr BoolInterval operator&&(BoolInterval x, BoolInterval y)
Logical AND operator for BoolInterval sets.
Definition codac2_BoolInterval.h:73
constexpr BoolInterval operator||(BoolInterval x, BoolInterval y)
Logical OR operator for BoolInterval sets.
Definition codac2_BoolInterval.h:94
std::ostream & operator<<(std::ostream &os, const BoolInterval &x)
Streams out a BoolInterval.
Definition codac2_BoolInterval.h:131
BoolInterval
Enumeration representing a boolean interval.
Definition codac2_BoolInterval.h:26
@ UNKNOWN
Definition codac2_BoolInterval.h:32
@ EMPTY
Definition codac2_BoolInterval.h:30