acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
status.h
1
// created by Camilo 2021-02-02 06:50 BRT <3CamiloSasukeThomasBorregaardSoerensen
2
#pragma once
3
#ifdef __clang__
4
#pragma clang diagnostic push
5
#pragma ide diagnostic ignored "google-explicit-constructor"
6
#endif
7
8
9
#include "acme/constant/status.h"
10
11
12
template
<
typename
TYPE >
13
class
status :
14
public
TYPE
15
{
16
public
:
17
18
19
::e_status
m_estatus;
20
21
22
status() { m_estatus = error_not_initialized; }
23
24
25
status(
const
TYPE & t, const ::e_status & estatus = ::success) :
26
TYPE(t),
27
m_estatus(estatus)
28
{
29
30
}
31
32
33
status(
const
TYPE&& t, const ::e_status & estatus = ::success) :
34
TYPE(::transfer(t)),
35
m_estatus(estatus)
36
{
37
38
}
39
40
41
status(const ::e_status & estatus) :
42
m_estatus(estatus == error_not_initialized ? error_failed : estatus.m_eenum)
43
{
44
45
}
46
47
48
status(::enum_status estatus) :
49
m_estatus(estatus == error_not_initialized ? error_failed : estatus)
50
{
51
52
}
53
54
55
status(nullptr_t) :
56
m_estatus(error_null_result)
57
{
58
59
}
60
61
62
bool
nok()
const
{
return
!is_ok(); }
63
64
bool
ok()
const
{
return
is_ok() !=
false
; }
65
66
[[nodiscard]] ::enum_status estatus()
const
{
return
m_estatus.m_eenum; }
67
68
[[nodiscard]]
bool
is_ok()
const
{
return
m_estatus.succeeded(); }
69
70
71
status & operator = (enum_status estatus)
72
{
73
74
m_estatus = estatus;
75
76
return
*
this
;
77
78
}
79
80
81
status & operator = (
const
e_status
& estatus)
82
{
83
84
m_estatus = estatus;
85
86
return
*
this
;
87
88
}
89
90
91
status & operator = (
const
TYPE &
payload
)
92
{
93
94
(*((TYPE*)(
this
))) =
payload
;
95
96
m_estatus = ::success;
97
98
return
*
this
;
99
100
}
101
102
103
};
104
105
106
template
<
typename
T >
107
class
particle_of
:
108
virtual
public
::particle
109
{
110
public
:
111
112
T m_payload;
113
114
};
115
116
117
template
<
typename
TYPE >
118
using
status_pointer = ::pointer < ::particle_of < TYPE > >;
119
120
//template < typename OBJECT >
121
//class transport :
122
// public status < ::pointer<OBJECT> >
123
//{
124
//public:
125
//
126
//
127
// using status < ::pointer<OBJECT >>:status;
128
// using status < ::pointer<OBJECT >>:operator =;
129
//
130
//
131
//};
132
133
134
135
//template < typename HOLDING >
136
//class holding_status
137
//{
138
//public:
139
//
140
//
141
// HOLDING m_holding;
142
// void m_estatus;
143
//
144
//
145
// holding_status() { m_estatus = error_not_initialized; }
146
//
147
//
148
// holding_status(const HOLDING & _, const ::e_status & estatus = ::success) :
149
// m_holding(_),
150
// m_estatus(estatus)
151
// {
152
//
153
// }
154
//
155
// holding_status(const HOLDING&& _, const ::e_status & estatus = ::success) :
156
// m_holding(::transfer(_)),
157
// m_estatus(estatus)
158
// {
159
//
160
// }
161
//
162
// holding_status(const ::e_status & estatus)
163
// {
164
//
165
// if (estatus == error_not_initialized)
166
// {
167
//
168
// m_estatus = ::error_failed;
169
//
170
// }
171
// else
172
// {
173
//
174
// m_estatus = estatus;
175
//
176
// }
177
//
178
// }
179
//
180
//
181
// holding_status(::enum_status estatus)
182
// {
183
//
184
// if (estatus == error_not_initialized)
185
// {
186
//
187
// estatus = ::error_failed;
188
//
189
// }
190
//
191
// m_estatus = estatus;
192
//
193
// }
194
//
195
//
196
// holding_status(nullptr_t)
197
// {
198
//
199
// m_estatus = error_null_result;
200
//
201
// }
202
//
203
//
204
// bool operator !() const { return !is_ok(); }
205
//
206
// operator bool() const { return is_ok(); }
207
//
208
// operator ::i32() const { return is_ok() != false; }
209
//
210
// ::e_status estatus() const { return m_estatus; }
211
//
212
// operator HOLDING() const { return m_holding; }
213
//
214
// HOLDING holding() const { return m_holding; }
215
//
216
// bool is_ok() const { return ::succeeded(m_estatus); }
217
//
218
//
219
// holding_status & operator = (const HOLDING & holding)
220
// {
221
//
222
// m_estatus = ::success;
223
//
224
// m_holding = (holding);
225
//
226
// return *this;
227
//
228
// }
229
//
230
//
231
// holding_status & operator = (HOLDING && holding)
232
// {
233
//
234
// m_estatus = ::success;
235
//
236
// m_holding = ::transfer(holding);
237
//
238
// return *this;
239
//
240
// }
241
//
242
//
243
// holding_status & operator = (enum_status estatus)
244
// {
245
//
246
// m_estatus = estatus;
247
//
248
// return *this;
249
//
250
// }
251
//
252
//
253
// holding_status & operator = (const e_status & estatus)
254
// {
255
//
256
// m_estatus = estatus;
257
//
258
// return *this;
259
//
260
// }
261
//
262
//
263
//};
264
//
265
266
#ifdef __clang__
267
#pragma clang diagnostic pop
268
#endif
269
270
271
e_status
Definition
e_status.h:30
particle_of
Definition
status.h:109
payload
Definition
payload.h:54
exception
status.h
Generated by
1.17.0