acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
aaa_bit.h
1
#pragma once
2
3
4
//namespace logic
5
//{
6
//
7
8
class
CLASS_DECL_ACME boolean
9
{
10
public
:
11
12
13
enum_boolean m_eboolean;
14
15
16
inline
boolean(enum_optional) { m_eboolean = e_boolean_none; }
17
18
19
inline
boolean() { m_eboolean = e_boolean_none; }
20
21
22
inline
boolean(::i32 i) { operator=(i); }
23
24
25
inline
boolean(
bool
b) { operator=(b); }
26
27
28
inline
boolean(
const
boolean
&
boolean
) : m_eboolean(e_boolean_none) {
if
(!
boolean
.undefined()) { m_eboolean =
boolean
.m_eboolean; } }
29
30
31
inline
bool
isFalse()
const
{
return
is_false(); }
32
33
34
inline
bool
is_false()
const
{
return
m_eboolean < e_boolean_false; }
35
36
37
inline
bool
undefined()
const
{
return
is_empty(); }
38
39
40
inline
bool
is_empty()
const
{
return
m_eboolean == e_boolean_empty; }
41
42
inline
bool
is_set()
const
{
return
m_eboolean != e_boolean_empty; }
43
44
inline
bool
notTrue()
const
{
return
m_eboolean < e_boolean_yes; }
45
46
47
inline
bool
is_none()
const
{
return
is_empty(); }
48
49
50
inline
bool
is_true()
const
{
return
m_eboolean > e_boolean_empty; }
51
52
53
inline
bool
is_true(
bool
bDefault)
const
{
return
m_eboolean ? isTrue() : bDefault; }
54
55
56
inline
bool
isTrue()
const
{
return
is_true(); }
57
58
59
inline
bool
is_optional()
const
{
return
!m_eboolean; }
60
61
62
inline
bool
isOptional()
const
{
return
is_optional(); }
63
64
65
inline
operator
bool()
const
{
return
isTrue(); }
66
67
68
inline
bool
operator!()
const
{
return
isFalse(); }
69
70
71
inline
bool
operator<(::i32 i)
const
{
return
(::i32)m_eboolean < i; }
72
73
74
inline
bool
operator<=(::i32 i)
const
{
return
(::i32)m_eboolean <= i; }
75
76
77
inline
bool
operator>(::i32 i)
const
{
return
(::i32)m_eboolean > i; }
78
79
80
inline
bool
operator>=(::i32 i)
const
{
return
(::i32)m_eboolean >= i; }
81
82
83
inline
bool
operator==(::i32 i)
const
{
return
(::i32)m_eboolean == i; }
84
85
86
inline
bool
operator!=(::i32 i)
const
{
return
!operator==(i); }
87
88
89
inline
boolean
& operator=(::i32 i)
90
{
91
m_eboolean = (i ? e_boolean_true : e_boolean_false);
92
return
*
this
;
93
}
94
95
96
inline
boolean
& operator=(
bool
b)
97
{
98
m_eboolean = (b ? e_boolean_true : e_boolean_false);
99
return
*
this
;
100
}
101
102
103
inline
bool
operator==(
bool
b)
const
{
return
(m_eboolean == e_boolean_true && b) || (m_eboolean == e_boolean_false && !b); }
104
105
106
inline
bool
operator!=(
bool
b)
const
{
return
!operator==(b); }
107
108
109
inline
boolean
& operator=(
const
boolean
&
boolean
)
110
{
111
if
(
this
!= &
boolean
&& !
boolean
.undefined()) { m_eboolean =
boolean
.m_eboolean; };
112
return
*
this
;
113
}
114
115
116
inline
void
defer(::i32 i) {
if
(is_empty()) { operator=(i); } }
117
118
119
inline
boolean
deferred(::i32 i)
const
{
if
(is_empty()) {
return
i; }
else
{
return
m_eboolean; } }
120
121
122
inline
boolean
operator()(::i32 i)
const
{
return
deferred(i); }
123
124
};
125
126
127
//} // namespace logic
128
129
130
131
inline
bool
__is_true(
bool
b) {
return
b; }
132
133
134
inline
bool
__is_true(
const
enum_boolean &
boolean
) {
return
boolean
> 0; }
135
136
137
inline
bool
__is_false(
bool
b) {
return
!b; }
138
139
140
inline
bool
__is_false(
const
enum_boolean & ebit) {
return
ebit < 0; }
141
142
143
inline
bool
__is_optional(
bool
b) {
return
false
; }
144
145
146
inline
bool
__is_optional(const ::logic::boolean &
boolean
) {
return
boolean
.isOptional(); }
147
148
149
#define __optional_is_true(flag, option) ((bool)(flag) || (__is_optional(flag) && (option)))
prototype
logic
aaa_bit.h
Generated by
1.17.0