76class CLASS_DECL_ACME subparticle :
77 virtual public ::quantum
82 ::interlocked_count m_countReference;
86#if REFERENCING_DEBUGGING
89 subparticle() : m_countReference(1) { }
106#if REFERENCING_DEBUGGING
107 subparticle(const ::subparticle & subparticle);
109 subparticle(const ::subparticle & subparticle) :
110 ::quantum(subparticle),
116#if REFERENCING_DEBUGGING
117 subparticle(::subparticle&& subparticle);
119 subparticle(::subparticle&& subparticle) :
120 ::quantum(::transfer(subparticle)),
121 m_countReference(::transfer(subparticle.m_countReference))
126 ~subparticle()
override;
129#if REFERENCING_DEBUGGING
131 void subparticle_referencing_debugging_construct();
136 virtual void initialize(
::particle * pparticle);
141 inline bool should_disable_referencing_debugging()
const {
return this->has_proto_flag(); }
154 virtual void get_debug_title(char_pointer sz, character_count c)
const;
156 virtual ::string get_short_debug_text(::i32 i)
const;
158 virtual void operator()();
161 virtual class ::time get_run_timeout();
163 virtual bool subparticle_step();
166 inline ::collection::count reference_count()
const {
return m_countReference; }
172 virtual ::i64 increment_reference_count();
173 virtual ::i64 decrement_reference_count();
174 virtual ::i64 replace_reference();
175 virtual ::i64 release();
181 inline ::i64 increment_reference_count();
182 inline ::i64 decrement_reference_count();
183 inline ::i64 replace_reference();
184 inline ::i64 release();
190#if REFERENCING_DEBUGGING
193 ::subparticle* refdbg_this()
const {
return (::subparticle*)
this; }
199 ::subparticle* m_psubparticleTopTrack =
nullptr;
204 ::subparticle * get_top_track()
const;
205 void add_top_track(::subparticle* psubparticle);
206 void erase_top_track(::subparticle* psubparticle);
207 bool contains_top_track(::subparticle* psubparticle)
const;
208 bool find_top_track(::subparticle* psubparticle, ::subparticle** ppsubparticleeParent)
const;
211 class ::time m_timeAllocation;
212 class reference_item_array * m_preferenceitema =
nullptr;
213 bool m_bHeapAllocation =
false;
214 void * m_pType =
nullptr;
215 memsize m_sType =
sizeof(::subparticle);
216 ::reference_referer * m_prefererTransfer2 =
nullptr;
217 ::reference_referer * m_prefererLast2 =
nullptr;
218 bool m_bReferencingDebuggingEnabled5 =
true;
219 bool m_bIncludeCallStackTrace =
false;
221 void set_size_type(memsize s) { m_sType = s; }
223 bool contains_object_in_address_space(::subparticle * psubparticle)
const
227 ::is_set(this->m_pType)
228 && this->m_sType >=
sizeof(::subparticle)
229 && ((::u8 *)psubparticle >= this->m_pType
230 && (((::u8 *)psubparticle) + psubparticle->m_sType)
231 <= (((::u8 *)this->m_pType) + this->m_sType));
235 class reference_item_array * reference_itema();
237 bool is_referencing_debugging_enabled()
const
240 return !this->should_disable_referencing_debugging() && m_bReferencingDebuggingEnabled5;
244 virtual void on_after_construct(::reference_referer* preferer);
247 void disable_referencing_debugging();
250 void add_reference_item(
bool bConstructing,
bool bIncludeCallStackTrace);
251 void add_referer(::reference_referer * preferer);
253 void erase_reference_item();
254 void check_pending_releases();
258 bool is_referencing_debugging_enabled()
const {
return false; }
263 virtual bool _is_set()
const;
264 virtual bool _is_ok()
const;
267 virtual enum_type get_payload_type()
const;
270 virtual void init_task();
271 virtual void term_task();
274 virtual void destroy();
275 virtual void destroy_impl_data();
276 virtual void destroy_os_data();
278 template <
typename TYPE >
279 ::cast < TYPE > cast() {
return this; }
281 template <
typename TYPE >
282 ::cast < TYPE > cast()
const {
return ((::subparticle *)
this)->cast < TYPE >() ; }
284 virtual ::subparticle_pointer clone();
292 virtual void delete_this();
294 virtual void call_member(enum_id eid);
300 [[nodiscard]]
virtual class ::time timeout()
const;
303 virtual void set_timeout(
const class time &
time);
305 virtual hsynchronization get_synchronization_handle();
312 virtual ::e_status lock();
313 virtual ::e_status lock(
const class time& timeWait);
315 virtual ::e_status wait();
316 virtual ::e_status wait(
const class time& timeWait);
317 virtual ::e_status wait(const ::function <
bool() > & functionShouldContinue);
319 virtual void _lock();
320 virtual bool _lock(
const class time& timeWait);
322 virtual void _wait();
323 virtual bool _wait(
const class time& timeWait);
325 virtual bool is_locked()
const;
328 virtual void unlock(::i32 lCount, ::i32* pPrevCount=
nullptr);
331 virtual void init_wait();
332 virtual void exit_wait();
335 virtual void acquire_ownership();
336 virtual void release_ownership();
339 [[nodiscard]]
virtual character_count sz_len()
const;
340 virtual void to_sz(char_pointer sz, character_count len)
const;
343 virtual void on_timed_out();
Definition subparticle.h:78
virtual bool defer_consume_main_arguments(::i32 argc, char_pointer *argv, ::i32 &iArgument)
virtual bool should_create_sequence_on_synchronicity();
Definition subparticle.cpp:295
virtual void unlock()
Definition subparticle.cpp:795