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{
22 enum class BoolInterval
23 {
24 FALSE = 0x01,
25 TRUE = 0x02,
27 EMPTY = 0x00,
29 UNKNOWN = 0x01 | 0x02
30 };
31
32 constexpr BoolInterval operator&(BoolInterval a, BoolInterval b)
33 { return static_cast<BoolInterval>(static_cast<int>(a) & static_cast<int>(b)); }
34
35 constexpr BoolInterval operator|(BoolInterval a, BoolInterval b)
36 { return static_cast<BoolInterval>(static_cast<int>(a) | static_cast<int>(b)); }
37
45 {
46 switch(x)
47 {
48 case BoolInterval::FALSE:
49 return BoolInterval::TRUE;
50 case BoolInterval::TRUE:
51 return BoolInterval::FALSE;
52 default:
54 }
55 }
56
64 inline std::ostream& operator<<(std::ostream& os, const BoolInterval& x)
65 {
66 switch(x)
67 {
69 os << "[ empty ]";
70 break;
71 case BoolInterval::FALSE:
72 os << "[ false ]";
73 break;
74 case BoolInterval::TRUE:
75 os << "[ true ]";
76 break;
78 os << "[ true, false ]";
79 break;
80 }
81 return os;
82 }
83}
BoolInterval operator~(BoolInterval x)
Returns the complementary of a BoolInterval.
Definition codac2_BoolInterval.h:44
std::ostream & operator<<(std::ostream &os, const BoolInterval &x)
Streams out a BoolInterval.
Definition codac2_BoolInterval.h:64
BoolInterval
Enumeration representing a boolean interval.
Definition codac2_BoolInterval.h:23
@ UNKNOWN
Definition codac2_BoolInterval.h:29
@ EMPTY
Definition codac2_BoolInterval.h:27