acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
e_flag.h
1
// Camilo Sasuke Thomas Borregaard Soerensen 2020-03-08
2
#pragma once
3
4
5
#include "acme/constant/flag.h"
6
7
8
DECLARE_C_FLAG(e_flag, enum_flag);
9
10
11
inline ::logic::boolean __enum_is_ok(const ::enum_flag& e) {
return
e & e_flag_success; }
12
inline ::logic::boolean __enum_is_failed(const ::enum_flag& e) {
return
(e & e_flag_failure) || (e & e_flag_timeout); }
13
14
15
//class CLASS_DECL_ACME e_flag
16
//{
17
//public:
18
//
19
//
20
// enum_flag m_eflag;
21
//
22
//
23
// e_flag() { m_eflag = e_flag_none; }
24
// e_flag(const std::initializer_list < enum_flag >& list_base) { m_eflag = e_flag_none; for (auto& e : list_base) add(e); }
25
// e_flag(enum_flag e) { m_eflag = e; }
26
// e_flag(::i64 i) { m_eflag = (enum_flag)i; }
27
// e_flag(const e_flag& e) { m_eflag = e.m_eflag; }
28
//
29
// inline void add(enum_flag e) { m_eflag = (enum_flag)(e | m_eflag); }
30
//
31
// inline e_flag& operator |= (enum_flag e) { add(e); return *this; }
32
// inline e_flag& operator &= (enum_flag e) { m_eflag = (enum_flag)(m_eflag & e); return *this; }
33
//
34
// inline e_flag& operator |= (const e_flag& e) { m_eflag = (enum_flag)(e.m_eflag | m_eflag); return *this; }
35
// inline e_flag& operator &= (const e_flag& e) { m_eflag = (enum_flag)(m_eflag & e.m_eflag); return *this; }
36
//
37
// inline e_flag& operator += (enum_flag e) { return operator |= (e); }
38
// inline e_flag& operator -= (enum_flag e) { return operator &= ((enum_flag)~(::i64)(e)); }
39
//
40
// inline e_flag& operator += (const e_flag& e) { return operator |= ((enum_flag)e.m_eflag); }
41
// inline e_flag& operator -= (const e_flag& e) { return operator &= ((enum_flag)~(::i64)(e.m_eflag)); }
42
//
43
// inline e_flag& operator ^= (const e_flag& e) { toggle(e); return *this; }
44
//
45
// inline e_flag operator + (const e_flag& t) const { auto copy = *this; copy.add(t); return copy; }
46
//
47
// inline e_flag operator - (enum_flag e) const { return (enum_flag)(m_eflag & ~((::i64)e)); }
48
//
49
// inline e_flag operator | (enum_flag e) const { return (enum_flag)(m_eflag | e); }
50
// inline e_flag operator & (enum_flag e) const { return (enum_flag)(m_eflag & e); }
51
//
52
// inline bool is(enum_flag e) const { return (::i64)(m_eflag & e) == (::i64)e; }
53
// inline bool has(enum_flag e) const { return is(e); }
54
//
55
// void erase(enum_flag e) { operator -= (e); }
56
// void add(const e_flag& e) { operator += (e); }
57
// void unset(const e_flag& e) { erase(e); }
58
// void set(const e_flag& e) { add(e); }
59
// void erase(const e_flag& e) { operator -= (e); }
60
// void clear() { m_eflag = (enum_flag)0; }
61
//
62
// void set(enum_flag e, bool bSet) { if (bSet) set(e); else unset(e); }
63
// void toggle(enum_flag e) { if (is(e)) unset(e); else set(e); }
64
//
65
// e_flag& operator = (const e_flag& e) { m_eflag = e.m_eflag; return *this; }
66
//
67
//
68
// bool operator == (const e_flag& e) const { return m_eflag == e.m_eflag; }
69
// bool operator == (enum_flag e) const { return m_eflag == e; }
70
//
71
//
72
// enum_flag& eflag() { return (enum_flag&)m_eflag; }
73
// enum_flag eflag() const { return (enum_flag)m_eflag; }
74
//
75
//
76
// operator enum_flag& ()
77
// {
78
//
79
// return (enum_flag&)m_eflag;
80
//
81
// }
82
//
83
//
84
// operator enum_flag() const
85
// {
86
//
87
// return (enum_flag)m_eflag;
88
//
89
// }
90
//
91
//
92
// e_flag& operator ++(::i32)
93
// {
94
//
95
// m_eflag = (enum_flag)((::i64)m_eflag + 1);
96
//
97
// return *this;
98
//
99
// }
100
//
101
//
102
// e_flag& operator %=(const enum_flag& eenum)
103
// {
104
//
105
// m_eflag = (enum_flag)((::i64)m_eflag % (::i64)eenum);
106
//
107
// return *this;
108
//
109
// }
110
//
111
//
112
// e_flag& rotate(const enum_flag& eenum)
113
// {
114
//
115
// if ((::i64)m_eflag < 0)
116
// {
117
//
118
// m_eflag = (enum_flag)0;
119
//
120
// }
121
//
122
// this->operator ++(0);
123
//
124
// return this->operator %=(eenum);
125
//
126
// }
127
//
128
//
129
//#if !defined(__OBJC__) && !defined(__cplusplus_winrt)
130
//
131
// IMPL_OPERATOR_PLUS(e_flag);
132
//
133
//#endif
134
//
135
//
136
//};
137
//
138
139
140
prototype
prototype
e_flag.h
Generated by
1.17.0