codac 1.5.6
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 inline std::ostream& operator<<(std::ostream& os, const BoolInterval& x)
46 {
47 switch(x)
48 {
50 os << "[ empty ]";
51 break;
52 case BoolInterval::FALSE:
53 os << "[ false ]";
54 break;
55 case BoolInterval::TRUE:
56 os << "[ true ]";
57 break;
59 os << "[ true, false ]";
60 break;
61 }
62 return os;
63 }
64}
std::ostream & operator<<(std::ostream &os, const BoolInterval &x)
Streams out a BoolInterval.
Definition codac2_BoolInterval.h:45
BoolInterval
Enumeration representing a boolean interval.
Definition codac2_BoolInterval.h:23
@ UNKNOWN
Definition codac2_BoolInterval.h:29
@ EMPTY
Definition codac2_BoolInterval.h:27