acme
Foundational cross-platform layer of the ca2 framework
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
8DECLARE_C_FLAG(e_flag, enum_flag);
9
10
11inline ::logic::boolean __enum_is_ok(const ::enum_flag& e) { return e & e_flag_success; }
12inline ::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