acme
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages Concepts
quantum.h
1// Created by camilo:hi5! on 2024-05-07 10:48 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5#include "acme/memory/quantum.h"
6//#include "subparticle_flags.h"
7
8
9class CLASS_DECL_ACME quantum :
10 public memory_quantum
11{
12public:
13
14
15 ::e_flag m_eflagElement;
16 ::e_status m_estatus;
17
18
19 virtual ~quantum();
20
21
22
23 [[nodiscard]] inline bool has_flag(enum_flag eflag) const { return (m_eflagElement & eflag) == eflag; }
24 inline void set_flag(enum_flag eflag) { m_eflagElement = (enum_flag)((unsigned long long)(m_eflagElement) | (unsigned long long)(eflag)); }
25 inline void set_flag(enum_flag eflag, bool bSet) { if (bSet) set_flag(eflag); else clear_flag(eflag); }
26 inline void clear_flag(enum_flag eflag) { m_eflagElement = (enum_flag)((unsigned long long)(m_eflagElement) & (~(unsigned long long)(eflag))); }
27
28
29 inline void set_ok_flag() { set_flag(e_flag_success); clear_flag(e_flag_timeout); clear_flag(e_flag_failure); }
30 inline void set_nok(enum_flag estatusFailure = e_flag_failure) { clear_flag(e_flag_success); set_flag(estatusFailure); }
31 inline void set_modified_flag(bool bModified = true) { set_flag(e_flag_changed, bModified); }
32
33
34 inline void set_fail_flag() { set_flag(e_flag_failure); clear_flag(e_flag_success); }
35 inline void set_timed_out_flag() { set_flag(e_flag_timeout); }
36 inline void set_persistent_flag(bool bSet = true) { set_flag(e_flag_persist, bSet); }
37
38
39 [[nodiscard]] inline bool has_ok_flag() const { return has_flag(e_flag_success); }
40 [[nodiscard]] inline bool nok() const { return has_flag(e_flag_failure) || has_flag(e_flag_timeout); }
41 [[nodiscard]] inline bool has_timed_out_flag() { return has_flag(e_flag_timeout); }
42 [[nodiscard]] inline bool has_modified_flag() const { return has_flag(e_flag_changed); }
43 [[nodiscard]] inline bool has_persistent_flag() const { return has_flag(e_flag_persist); }
44
45 [[nodiscard]] inline bool has_shared_flag() const { return has_flag(e_flag_shared); }
46 inline void set_shared_flag(bool bSet = true) { set_flag(e_flag_shared, bSet); }
47
48
49 [[nodiscard]] inline bool has_finishing_flag() const { return has_flag(e_flag_finishing); }
50 //inline void set_finishing_flag() { set_flag(e_flag_finishing); };
51 void set_finishing_flag();
52 inline void clear_finishing_flag() { clear_flag(e_flag_finishing); }
53
54
55 [[nodiscard]] inline bool has_initialized_flag() const { return has_flag(e_flag_initialized); }
56 inline void set_initialized_flag() { set_flag(e_flag_initialized); }
57 inline void clear_initialized_flag() { clear_flag(e_flag_initialized); }
58
59
60 [[nodiscard]] inline bool has_acquired_flag() const { return has_flag(e_flag_acquired); }
61 inline void set_acquired_flag() { set_flag(e_flag_acquired); }
62 inline void clear_acquired_flag() { clear_flag(e_flag_acquired); }
63
64 [[nodiscard]] inline bool has_own_synchronization_flag() const { return has_flag(e_flag_own_synchronization); }
65 inline void set_own_synchronization_flag(bool bSet = true) { set_flag(e_flag_own_synchronization, bSet); }
66 inline void clear_own_synchronization_flag() { clear_flag(e_flag_own_synchronization); }
67
68
69 [[nodiscard]] inline bool has_already_exists_flag() const { return has_flag(e_flag_already_exists); }
70 inline void set_already_exists_flag(bool bSet = true) { set_flag(e_flag_already_exists, bSet); }
71 inline void clear_already_exists_flag() { clear_flag(e_flag_already_exists); }
72
73
74 // [[nodiscard]] inline bool is_heap_allocated() const { return has_flag(e_flag_heap_allocated); }
75 // inline void set_heap_allocated() { set_flag(e_flag_heap_allocated); }
76 // inline void clear_heap_allocated() { clear_flag(e_flag_heap_allocated); }
77
78
79 [[nodiscard]] inline bool has_destroying_flag() const { return has_flag(e_flag_destroying); }
80 void set_destroying_flag();
81 inline void clear_destroying_flag() { clear_flag(e_flag_destroying); }
82
83
84 [[nodiscard]] inline bool has_storing_flag() const { return has_flag(e_flag_storing); }
85 [[nodiscard]] inline bool has_loading_flag() const { return !has_storing_flag(); }
86
87
88 inline void set_storing_flag() { set_flag(e_flag_storing); }
89 inline void set_loading_flag() { clear_flag(e_flag_storing); }
90
91
92 inline void defer_set_storing_flag() { if (!has_storing_flag()) set_storing_flag(); }
93 inline void defer_set_loading_flag() { if (!has_loading_flag()) set_loading_flag(); }
94
95
96 inline void set_statically_allocated_flag() { set_flag(e_flag_statically_allocated); }
97 inline void set_verbose_flag(bool bVerbose = true) { set_flag(e_flag_verbose, bVerbose); }
98 [[nodiscard]] inline bool has_verbose_flag() const { return has_flag(e_flag_verbose); }
99
100
101
102 [[nodiscard]] inline bool has_read_only_flag() const { return has_flag(e_flag_read_only); }
103 inline void set_read_only_flag() { set_flag(e_flag_read_only); }
104 inline void clear_read_only_flag() { clear_flag(e_flag_read_only); }
105
106 [[nodiscard]] inline bool has_owner_flag() const { return has_flag(e_flag_owner); }
107 inline void set_owner_flag() { set_flag(e_flag_owner); }
108 inline void clear_owner_flag() { clear_flag(e_flag_owner); }
109
110
111 inline bool is_status_ok() const { return m_estatus.ok(); }
112 inline bool has_failed_status() const { return !is_status_ok(); }
113
114 //[[nodiscard]] inline bool is_realized() const { return has_flag(e_flag_realized); }
116
117
118 virtual void request(::request * prequest);
119 virtual void on_request(::request * prequest);
120
121
122};
Definition e_status.h:30
Definition quantum.h:11
virtual void request(::request *prequest)
inline void set_realized() { set_flag(e_flag_realized); }
Definition quantum.cpp:15