acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
particle.h
1// Injected in acme (camilo) from apex(thomas) by camilo on ThomasMonth19-2021 12:27 BRT
2// Merge with control_"topic" by camilo on day after ThomasBirthday2021 10:14
3// Created by camilo on 2021-02-04 18:05 <3ThomasBorregaardSorensen!!
4// Renamed to topic by camilo on 2021-02-04 18:05 <3ThomasBorregaardSorensen!!
5// From handler: on 2022-10-30 08:15 <3ThomasBorregaardSorensen!!
6// From event_handler to handler at prototype_subject on day after ThomasBirthday2021 05:05 BRT
7// From user namespace to global at apex by camilo on day after ThomasBirthday2021 04:36 BRT
8// From aura by camilo on ThomasBirthday2021 20:00 BRT
9//
10// a recreation(from control_event_listener) by camilo on 28/06/2021 22:23 BRT <3ThomasBS_!!
11//
12#pragma once
13
14
15#include "acme/platform/allocator.h"
16#include "acme/prototype/string/scoped_string_base.h"
17//#include "acme/prototype/prototype/signal.h"
18//#include "acme/prototype/prototype/post_procedure_continuation.h"
19#include "acme/platform/auto_pointer.h"
20
21
23
24namespace platform
25{
26
27
28 class platform;
29
30 class tracer;
31
32
33} // namespace platform
34
35
37
38
39class dispatch_array2;
40
41
42class extended_topic;
43
44
45class trace_statement;
46
47
48//CLASS_DECL_ACME ::factory::factory * get_system_factory();
49
50
51//CLASS_DECL_ACME ::platform::tracer * tracer();
52
53
54
55//struct PARTICLE
56//{
57//public:
58//
59//
60//
61// PARTICLE()
62// {
63//
64// }
65//};
66
67
68//#include "acme/handler/sequence_continuation.h"
69#include "acme/platform/trace_statement.h"
70#include "acme/prototype/string/string.h"
71
72
73using particle_pointer = ::pointer < ::particle >;
74
75
76
77//#if REFERENCING_DEBUGGING
78//#include "acme/platform/reference_count_debug.h"
79//#endif
80
81
82namespace prototype
83{
84
85 class prototype;
86
87} // namespace prototype
88
90
91
92// ThomasBorregaardSorensen!! Like handlers : now particle with handle::handlers*
93class CLASS_DECL_ACME particle :
94 virtual public signal_handler::base
95{
96public:
97
98
99 mutable ::platform::application * m_papplication;
100 mutable ::particle_pointer m_pparticleSynchronization;
101
102
103//#if REFERENCING_DEBUGGING
104 particle() : m_papplication(nullptr), m_pparticleSynchronization(nullptr) { }
105
106
107 //particle(const ::e_flag & eflag, const ::e_status & estatus = undefined) :
108 //::quantum(eflag, estatus),
109 //::subparticle(eflag, estatus),
110 //::signal_handler::base(eflag, estatus),
111 // m_papplication(nullptr),
112 // m_pparticleSynchronization(nullptr)
113 //{
114 //
115 //
116 //}
117
118
119 particle(const ::particle & particle) :
120 ::quantum(particle),
121 ::subparticle(particle)
122 {
123
124
125 }
126
127 particle(::particle&& particle) :
128 ::quantum(::transfer(particle)),
129 ::subparticle(::transfer(particle))
130 {
131
132
133 }
134
135
136//#else
137// particle() : m_countReference(1) {}
138//#endif
139
140//
141// particle(::particle * pparticleParent);
142//#else
143 ~particle() override;
144
145
146
147 inline bool is_null() const { return ::is_null(this); }
148 inline bool is_set() const { return !is_null() && _is_set(); }
149
150 inline bool is_ok() const { return is_set() && _is_ok(); }
151 inline bool nok() const { return !is_ok(); }
152
153
154
155 void initialize(::particle * pparticle) override;
156 void _initialize_particle(::particle* pparticle);
157 virtual void _on_initialize_app_consumer();
158 //void finalize() override;
159
160
161 bool _is_ok() const override;
162
163
164 virtual bool should_run() const;
165
166
167 virtual void on_notify(::particle * pparticle, enum_id eid);
168
169 virtual bool on_command_final(const ::atom & atom, ::user::activation_token * puseractivationtoken);
170
171// virtual void delete_this();
172
173 virtual bool check_pipe_node_client_executable_paths(const ::file::path & pathNode, const ::file::path & pathClient);
174
175 inline ::particle * trace_this() const { return (::particle *) this; }
176
177 virtual enum_trace_level main_trace_level() const;
178
179 inline bool is_debug_trace_level() const {return this->main_trace_level() >= e_trace_level_debug;}
180
181 virtual ::particle * get_context_particle();
182
183 inline ::particle * synchronization() const { return ::is_set(this) ? m_pparticleSynchronization.m_p : nullptr; }
184 void set_synchronization(::particle * pparticleSynchronization);
185 void defer_create_synchronization();
186
187 void operator()(::topic * ptopic, ::handler_context * phandlercontext) override;
188 //void operator()(::sequencer & sequencer) override;
189
190 //virtual void destroy();
191
192 //virtual void aggregate(::sequencer & psequence);
193 //virtual void complete_step(::sequencer & sequence);
194 //virtual ::sequencer get_current_sequencer();
195 //virtual void set_current_sequencer(const ::sequencer & sequence);
196
197 //virtual void initialize(::particle * pparticle);
198 virtual void on_initialize_particle();
199
200
201 virtual ::topic_pointer create_topic(const ::atom & atom);
202 virtual ::extended_topic_pointer create_extended_topic(const ::atom & atom);
203
204
205 //class ::platform::platform * platform() const;
206 static class ::platform::platform * platform();
207
208 //virtual class ::platform::platform * _platform() const;
209
210
211 ::mathematics::mathematics * mathematics() const;
212
213 ::prototype::prototype * prototype() const;
214
215
216 ::image::image_context* image() const;
217 ::image::imaging * imaging() const;
218 ::draw2d::draw2d * draw2d() const;
219 ::write_text::write_text * write_text() const;
220
221
222 class ::user::user * user() const;
223
224
225 ::platform::system * system() const;
226 ::platform::session * session() const;
227 ::platform::application * application() const;
228 ::platform::node * node() const;
229 //::platform::context * context() const;
230
231 //::aura::application* auraapplication() const;
232
233 void delete_this() override;
234
235
236 //::file_system * file_system() const;
237 //::directory_system * directory_system() const;
238 //::platform::context* apexcontext() const;
239 //::aura::context* auracontext() const;
240 ::datetime::datetime * datetime() const;
241 ::internet::internet * internet() const;
242 ::url::url_context* url() const;
243 ::crypto::crypto * crypto() const;
244 ::nano::nano* nano() const;
245 //::os_context * os_context() const;
246
247
248 //::apex::application * apexapplication() const;
249
250
251 ::directory_context * directory() const;
252 ::directory_system * directory_system() const;
253 ::file_context * file() const;
254 ::file_system * file_system() const;
255 ::path_system * path_system() const;
256
257
258 virtual ::file::watcher * file_watcher() const;
259
260
261 ::pointer < ::file::item > file_item(const ::file::path & path);
262
263
264 ::networking::networking * networking() const;
265 //::http_system * http_system() const;
266 //::platform::context * http() const;
267 ::platform::http * http() const;
268
269
270 virtual ::factory::factory_pointer & factory() const;
271 virtual ::factory::factory_pointer & factory(const ::scoped_string & scopedstrLibrary) const;
272 virtual ::factory::factory_pointer & factory(const ::scoped_string & scopedstrComponent, const ::scoped_string & scopedstrImplementation) const;
273 virtual ::factory::factory * component_factory(const ::scoped_string & scopedstrComponent) const;
274 //::factory::factory* factory(const ::atom& atom);
275
276 //virtual void handle(::topic * ptopic, ::handler_context * phandlercontext);
277
278
279
280
281
282
283 virtual void install_message_routing(::channel * pchannel);
284
285
286// virtual void init_task();
287//
288 //virtual void initialize_matter(::matter * pmatter);
289
290
291 virtual ::payload get_result_payload();
292
293
294// virtual bool particle_step();
295 //void on_sequence() override;
296
297
298 virtual void set_finish();
299
300
301
302
303
304 virtual bool is_branch_current() const;
305
306
307
308
309 virtual const_char_pointer topic_text() const;
310 //virtual const_char_pointer raw_class_title() const;
311
312
313
314
315
316
317
318 //PARTICLE(const class ::atom & atom) :
319 // id()(atom)
320 //{
321
322 //}
323
324
325 //PARTICLE(const PARTICLE & topic) :
326 // id()(topic.id())
327 //{
328
329 //}
330
331
332 //PARTICLE(PARTICLE && topic) :
333 // id()(topic.id())
334 //{
335
336 //}
337
338 virtual enum_trace_category trace_category(const ::particle * pparticle) const;
339 virtual enum_trace_category trace_category() const;
340
341
342
343 //virtual void trace_arguments(enum_trace_level etracelevel, enum_trace_category etracecategory, const_char_pointer pszFormat, va_list & arguments);
344 //virtual void trace_log_information_arguments(enum_trace_category etracecategory, const_char_pointer pszFormat, va_list & arguments);
345 //virtual void trace_log_warning_arguments(enum_trace_category etracecategory, const_char_pointer pszFormat, va_list & arguments);
346 //virtual void trace_log_error_arguments(enum_trace_category etracecategory, const_char_pointer pszFormat, va_list & arguments);
347 //virtual void trace_log_fatal_arguments(enum_trace_category etracecategory, const_char_pointer pszFormat, va_list & arguments);
348
349
350 //virtual void trace_arguments(enum_trace_level etracelevel, const_char_pointer pszFormat, va_list & arguments);
351 //virtual void trace_log_information_arguments(const_char_pointer pszFormat, va_list & arguments);
352 //virtual void trace_log_warning_arguments(const_char_pointer pszFormat, va_list & arguments);
353 //virtual void trace_log_error_arguments(const_char_pointer pszFormat, va_list & arguments);
354 //virtual void trace_log_fatal_arguments(const_char_pointer pszFormat, va_list & arguments);
355
356
357 //virtual void trace(enum_trace_level etracelevel, enum_trace_category etracecategory, const_char_pointer pszFormat, ...);
358 //virtual void trace_log_information() << enum_trace_category etracecategory, const_char_pointer pszFormat, ...;
359 //virtual void trace_log_warning() << enum_trace_category etracecategory, const_char_pointer pszFormat, ...;
360 //virtual void trace_log_error() << enum_trace_category etracecategory, const_char_pointer pszFormat, ...;
361 //virtual void trace_log_fatal() << enum_trace_category etracecategory, const_char_pointer pszFormat, ...;
362
363
364 //virtual void trace(enum_trace_level etracelevel, const_char_pointer pszFormat, ...);
365 //virtual void trace_log_information() << const_char_pointer pszFormat, ...;
366 //virtual void trace_log_warning() << const_char_pointer pszFormat, ...;
367 //virtual void trace_log_error() << const_char_pointer pszFormat, ...;
368 //virtual void trace_log_fatal() << const_char_pointer pszFormat, ...;
369
370
371 virtual ::platform::tracer * tracer() const;
372
373
374 virtual ::trace_statement trace_statement() const;
375
376
377 virtual ::trace_statement & trace_statement_prefix(::trace_statement & statement) const;
378
379
380 virtual ::trace_statement log_statement() const;
381
382
383 //virtual trace_statement trace(enum_trace_level etracelevel);
384
385 virtual ::trace_statement debug() const;
386 virtual ::trace_statement information() const;
387 virtual ::trace_statement warning() const;
388 virtual ::trace_statement error() const;
389 virtual ::trace_statement fatal() const;
390
391
392 virtual void tracef(enum_trace_level etracelevel, const_char_pointer pszFormat, ...) const;
393
394 virtual void formatf_trace(enum_trace_level etracelevel, const_char_pointer pszFormat, va_list & arguments) const;
395
396
397 template<typename... Args>
398 void print_line(std::format_string<Args...> fmt, Args&&... args) const
399 {
400
401 string str;
402
403 str.format(fmt, ::std::forward < Args >(args)...);
404
405 print_line(str);
406
407 }
408
409
410 template<typename... Args>
411 void err_line(std::format_string<Args...> fmt, Args&&... args) const
412 {
413
414 string str;
415
416 str.format(fmt, ::std::forward < Args >(args)...);
417
418 err_line(str);
419
420 }
421
422 virtual void print_line(const ::scoped_string & scopedstr) const;
423 virtual void print_out(const ::scoped_string & scopedstr) const;
424 virtual void printf_line(const_char_pointer pszFormat, ...) const;
425 virtual void printf_out(const_char_pointer pszFormat, ...) const;
426 virtual void err_line(const ::scoped_string & scopedstr) const;
427 virtual void err_out(const ::scoped_string & scopedstr) const;
428 virtual void errf_line(const_char_pointer pszFormat, ...) const;
429 virtual void errf_out(const_char_pointer pszFormat, ...) const;
430
431 virtual void debugf(const_char_pointer pszFormat, ...) const;
432 virtual void informationf(const_char_pointer pszFormat, ...) const;
433 virtual void warningf(const_char_pointer pszFormat, ...) const;
434 virtual void errorf(const_char_pointer pszFormat, ...) const;
435 virtual void fatalf(const_char_pointer pszFormat, ...) const;
436
437
438//#if defined(__STD_FORMAT__)
439
440 // With help from speccylad(twitch)/turd(discord) 2023-10-27 ~09:00 BRT
441 template<typename... Args>
442 void trace(enum_trace_level etracelevel, std::format_string<Args...> fmt, Args&&... args) const
443 {
444
445 auto statement = ::transfer(log_statement());
446
447 statement(etracelevel)(trace_category());
448
449 statement.format_output(fmt, ::std::forward<Args>(args)...);
450
451 }
452
453 // With help from speccylad(twitch)/turd(discord) 2023-10-27 ~09:00 BRT
454 template<typename... Args>
455 void debug(std::format_string<Args...> fmt, Args &&...args) const
456 {
457 trace(e_trace_level_debug, fmt, ::std::forward<Args>(args)...);
458 }
459 template<typename... Args>
460 void information(std::format_string<Args...> fmt, Args&&... args) const
461 {
462 trace(e_trace_level_information, fmt, ::std::forward<Args>(args)...);
463 }
464 // With help from speccylad(twitch)/turd(discord) 2023-10-27 ~09:00 BRT
465 template<typename... Args>
466 void warning(std::format_string<Args...> fmt, Args&&... args) const
467 {
468 trace(e_trace_level_warning, fmt, ::std::forward<Args>(args)...);
469 }
470 // With help from speccylad(twitch)/turd(discord) 2023-10-27 ~09:00 BRT
471 template<typename... Args>
472 void error(std::format_string<Args...> fmt, Args&&... args) const
473 {
474 trace(e_trace_level_error, fmt, ::std::forward<Args>(args)...);
475 }
476 // With help from speccylad(twitch)/turd(discord) 2023-10-27 ~09:00 BRT
477 template<typename... Args>
478 void fatal(std::format_string<Args...> fmt, Args&&... args) const
479 {
480 trace(e_trace_level_fatal, fmt, ::std::forward<Args>(args)...);
481 }
482
483
484//#endif
485
486
487 void trace(enum_trace_level etracelevel, const ::scoped_string & scopedstr) const;
488 void debug(const scoped_string & scopedstr) const;
489 void information(const scoped_string & scopedstr) const;
490 void warning(const scoped_string & scopedstr) const;
491 void error(const scoped_string & scopedstr) const;
492 void fatal(const scoped_string & scopedstr) const;
493
494 //virtual trace_statement trace_log_warning() << ;
495 //virtual trace_statement trace_log_error() << ;
496 //virtual trace_statement trace_log_fatal() << ;
497
498
499 //virtual trace_statement trace(enum_trace_level etracelevel, enum_trace_category etracecategory);
500 //virtual trace_statement trace_log_information() << enum_trace_category etracecategory;
501 //virtual trace_statement trace_log_warning() << enum_trace_category etracecategory;
502 //virtual trace_statement trace_log_error() << enum_trace_category etracecategory;
503 //virtual trace_statement trace_log_fatal() << enum_trace_category etracecategory;
504
505
506
507 //virtual ::particle * raw_new() const;
508
509
510 // ThomasBorregaardSorensen!! Like handlers
511 //virtual void call(const enum_message, ::i64 iData = 0, ::matter * pmatter = nullptr);
512 //virtual void call(const enum_id, ::i64 iData = 0, ::matter* pmatter = nullptr);
513
515
516
517 // ThomasBorregaardSorensen!! Like handlers
518 virtual lresult message_handler(::user::enum_message eusermessage, ::wparam wparam, ::lparam lparam);
519 virtual void handle(::topic * ptopic, ::handler_context * phandlercontext);
520 virtual void handle(const ::call & call);
521 virtual void handle_message(::message::message * pmessage);
522 virtual void handle_item(::item * pitem);
523
524 using subparticle::call;
525 // ThomasBorregaardSorensen!! Like handlers
526 virtual lresult message_call(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {});
527 virtual void call_handle(::topic * ptopic, ::handler_context * phandlercontext);
528 virtual void call_handle_message(::message::message* pmessage);
529 virtual void call_handle_item(::item* pitem);
530
531 virtual bool _handle_uri(const ::scoped_string & scopedstrUri);
532 virtual bool _handle_call(::payload & payload, const ::scoped_string & scopedstrObject, const ::scoped_string & scopedstrMember, ::property_set & propertyset);
533
534 // <3ThomasBorregaardSorensen__!! likes handler concept...
535 //void route(::signal * psignal) override;
536 //void signal(::signal * psignal) override;
537 //void route(::topic * ptopic, ::handler_context * phandlercontext) override;
538 //void post_process(::topic * ptopic, ::handler_context * phandlercontext) override;
539
540 // <3TBS_!! handle -> call_member <3TBS_!!
541 virtual void call_member(::i64 hi);
542 // <3ThomasBS_!! handle -> handle <3ThomasBS_!!
543 //void handle(const emessage, ::i64 iData = 0, ::matter * pmatter = nullptr) override;
544 //void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
545 //void handle(::message::message * pmessage) override;
546 virtual ::lresult call_message(const ::user::enum_message & emessage, ::wparam wparam = {}, ::lparam lparam = {}, ::particle * pparticle = nullptr);
547
548 virtual ::lresult call_id_topic(const ::enum_id & eid, ::wparam wparam = {}, ::lparam lparam = {}, ::particle * pparticle = nullptr);
549
550
551// void run() override;
552 virtual ::payload realize();
553
554
555 //virtual ::element * clone() const;
556
557
558
559 virtual void set_generic_object_name(const ::scoped_string & scopedstrName);
560 virtual void set_library_name(const ::scoped_string & scopedstrLibraryName);
561 // if this is an application/or nano application
562 virtual void set_application_id(const ::scoped_string & scopedstrApplicationId);
563
564
565// // currently expected returned statuses:
566// // ::error_failed
567// // ::error_wait_timeout
568// // ::success
569// // also see synchronization// virtual ::e_status wait();
570// virtual ::e_status wait(const class time & timeWait);
571
572
573
574 virtual ::particle * get_taskpool_container();
575
576
577 virtual ::task_pool * taskpool();
578
579
580
581 virtual const_char_pointer debug_note() const;
582
583
584
585 [[nodiscard]] virtual bool should_run_async() const;
586
587
588 virtual ::pointer<::user_interface::message_box>
589 message_box(const ::scoped_string &scopedstrMessage, const ::scoped_string &scopedstrTitle = nullptr,
590 const ::user::e_message_box &emessagebox = {}, const ::scoped_string &scopedstrDetails = nullptr,
591 const ::string_array_base * pstraIconUrl = nullptr);
592 virtual ::pointer<::user_interface::message_box>
593 message_box(const ::exception &exception, const ::scoped_string &scopedstrMessage = nullptr,
594 const ::scoped_string &scopedstrTitle = nullptr, const ::user::e_message_box &emessagebox = {},
595 const ::scoped_string &scopedstrDetails = nullptr, const ::string_array_base * pstraIconUrl = nullptr);
596
597
598// [[nodiscard]] virtual ::pointer<::message_box>
599// send_message_box(const ::scoped_string &scopedstrMessage, const ::scoped_string &scopedstrTitle = nullptr,
600// const ::user::e_message_box &emessagebox = {}, const ::scoped_string &scopedstrDetails = nullptr,
601// const ::string_array_base *pstraIconUrl = nullptr);
602// [[nodiscard]] virtual ::pointer<::message_box>
603// send_message_box(const ::exception &exception, const ::scoped_string &scopedstrMessage = nullptr,
604// const ::scoped_string &scopedstrTitle = nullptr, const ::user::e_message_box &emessagebox = {},
605// const ::scoped_string &scopedstrDetails = nullptr,
606// const ::string_array_base *pstraIconUrl = nullptr);
607//
608// virtual void post_message_box(const ::scoped_string &scopedstrMessage, const ::scoped_string &scopedstrTitle = {},
609// const ::user::e_message_box &emessagebox = {},
610// const ::function<void(::message_box *)> & functionOnResult = {},
611// const ::scoped_string &scopedstrDetails = nullptr,
612// const ::string_array_base * pstraIconUrl = nullptr);
613
614 //virtual void post_message_box_payload(::message_box_payload *pmessageboxpayload);
615
616 //virtual ::pointer < ::message_box_payload > message_box(const ::scoped_string & scopedstrMessage, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
617 //virtual ::pointer < ::message_box_payload > exception_message_box(const ::exception& exception, const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
618 //virtual ::pointer < ::message_box_payload > message_console(const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
619 //virtual ::pointer < ::message_box_payload > exception_message_console(const ::exception& exception, const ::scoped_string & scopedstrMessage = nullptr, const ::scoped_string & scopedstrTitle = nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok, const ::scoped_string & scopedstrDetails = nullptr, ::nano::graphics::icon * picon = nullptr);
620
621 //virtual void display(::message_box_payload * pmessageboxpayload);
622 //virtual void display_exception(const ::exception& exception, ::message_box_payload * pmessageboxpayload);
623
624 virtual ::file_pointer get_file(const ::payload& payloadFile, ::file::e_open eopen, ::pointer < ::file::exception > * pfileexception = nullptr);
625 //inline ::file_pointer get_reader(const ::payload& payloadFile, ::file::e_open eopen = ::file::e_open_binary);
626 //inline ::file_pointer get_writer(const ::payload& payloadFile, ::file::e_open eopen = ::file::e_open_binary | ::file::e_open_defer_create_directory | ::file::e_open_create);
627
628
629 template < typename BASE_TYPE >
630 inline ::pointer<BASE_TYPE>__call__create(::factory::factory * pfactory = nullptr);
631
632 //::pointer<subparticle>__call__id_create(const ::atom& atom, ::factory::factory * pfactory = nullptr);
633
634 template < typename TYPE >
635 inline ::pointer<TYPE> __call__create_new();
636
637 template < typename TYPE >
638 inline ::pointer<TYPE> __call__create_new_clone(TYPE * p);
639
640 template < typename T, typename ...Args >
641 ::pointer < T > __call__allocate_and_initialize(Args &&... args)
642 {
643
644 auto p = ::transfer(
645 allocateø T(
646 ::std::forward<Args>(args)...));
647
648 p->initialize(this);
649
650 return ::transfer(p);
651
652 }
653
654
655 template < typename TYPE >
656 inline TYPE*__initialize(TYPE * p)
657 {
658 p->initialize(this);
659 return p;
660
661 }
662
663 template < typename TYPE >
664 inline ::pointer < TYPE > __initialize(::pointer < TYPE > && p)
665 {
666 p.m_p->initialize(this);
667 return ::transfer(p);
668
669 }
670
671 template < typename T >
672 ::pointer < T > create_clone(const ::pointer < T > & psource)
673 {
674
675 return this->create_clone(psource.m_p REFERENCING_DEBUGGING_COMMA_P_FUNCTION_NOTE(psource.m_p, __FUNCTION__, __FILE_LINE__));
676
677 }
678
679
681 template < typename T >
682 ::pointer < T > create_clone(const T * pSource)
683 {
684
685 auto p = this->createø< T >();
686
687 if (!p)
688 {
689
690 return nullptr;
691
692 }
693
694 *p = pSource;
695
696 return p;
697
698 }
699
700
702 //template < typename T >
703 //::pointer < T > create_new_clone(const ::pointer < T > & psource )
704 //{
705
706 // return this->create_new_clone(psource.m_p);
707
708 //}
709
710
712 template < typename T >
713 ::pointer < T > __call__create_new_clone(const T * pSource)
714 {
715
716 auto p = this->create_newø< T >();
717
718 if (!p)
719 {
720
721 return nullptr;
722
723 }
724
725 *p = *pSource;
726
727 return p;
728
729 }
730
731
732 virtual void app_post(const ::procedure & procedure);
733 virtual ::task_pointer app_fork(const ::procedure & procedure);
734
735 virtual void task_post(const ::procedure & procedure);
736 virtual ::task_pointer task_fork(const ::procedure & procedure);
737
738
739 virtual void user_send(const ::procedure & procedure);
740 //virtual void user_send(const ::procedure & procedure);
741 inline dispatch_arrayø user_sendø();
742 //inline sequence_continuation user_sync();
743
744
745 virtual void user_post(const ::procedure & procedure);
746 //virtual void user_post(const ::procedure & procedure);
747 inline dispatch_arrayø user_postø();
748 //inline sequence_continuation user_async();
749
750
751 virtual void main_send(const ::procedure & procedure);
752 //virtual void main_send(const ::procedure & procedure);
753 inline dispatch_arrayø main_sendø();
754 //inline sequence_continuation main_sync();
755
756
757 virtual void main_post(const ::procedure & procedure);
758 //virtual void main_post(const ::procedure & procedure);
759 inline dispatch_arrayø main_postø();
760 //inline sequence_continuation main_async();
761
762
763 virtual class ::time get_default_run_timeout();
764
765
766 virtual void send(const ::procedure & procedure);
767 //virtual void send(const ::procedure & procedure);
768 //inline sequence_continuation sync(const class ::time & timeout = {});
769 inline dispatch_arrayø sendø();
770
771 virtual void post(const ::procedure & procedure);
772 //virtual void post(const ::procedure & procedure);
773 //inline sequence_continuation async();
774 inline dispatch_arrayø postø();
775
776
777
778
779
780 virtual void handle(bool bSynchronously, const ::procedure & procedure);
781
782
783
784 virtual void dispatch_procedure(enum_dispatch edispatch, const procedure & procedure);
785 virtual void dispatch(const dispatch_array2 & dispatcha);
786
787 //inline post_procedure_continuation queue();
788
789
791 //virtual ::particle_pointer realize(::particle * pparticleReificator);
792
793
795 //virtual ::particle_pointer realize_particle(::particle * pparticleToRealize);
796
797 //virtual void realize(::particle * pparticleAgent);
798 //virtual void display_sync(::particle_pointer p);
799 //virtual void display_async(::particle_pointer p);
800
801 //virtual void _user_send_procedure(const ::procedure & procedure);
802 //virtual void _user_post_procedure(const ::procedure & procedure);
803
804 //virtual void _user_send(::subparticle * psubparticle);
805 //virtual void _user_post(::subparticle * psubparticle);
806
807 //virtual void _main_send_procedure(const ::procedure & procedure);
808 //virtual void _main_post_procedure(const ::procedure & procedure);
809
810 //virtual void _main_send(::subparticle * psubparticle);
811 //virtual void _main_post(::subparticle * psubparticle);
812
813 //virtual void _post_procedure(const ::procedure & procedure);
814 //virtual void _send_procedure(const ::procedure & procedure);
815
816 //virtual void _post(::subparticle * psubparticle);
817 //virtual void _send(::subparticle * psubparticle);
818
819
820 template < typename BASE_TYPE >
821 inline bool __call__defer_construct(::pointer<BASE_TYPE>& ptype, ::factory::factory * pfactory = nullptr);
822
823 template < typename TYPE >
824 inline bool __calldefer_construct_newø(::pointer<TYPE>& ptype);
825
826 template < typename TYPE >
827 inline bool __call__defer_raw_construct_new(::pointer<TYPE>& ptype);
828
829 template < typename BASE_TYPE >
830 inline void __call__construct(::pointer<BASE_TYPE>& ptype, ::factory::factory * pfactory = nullptr);
831
832 //template < typename BASE_TYPE, typename TYPE >
833 //inline void __call__construct(::pointer<BASE_TYPE>& ptype, const ::pointer < TYPE >& p);
834
835 //template < typename BASE_TYPE, typename TYPE >
836 //inline void __call__construct(::pointer<BASE_TYPE>& ptype, TYPE* p);
837
838
839
840 template < typename BASE_TYPE >
841 inline void __call__construct_by_type(::pointer<BASE_TYPE>& ptype, const ::platform::type & type, ::factory::factory * pfactory = nullptr);
842
843 virtual ::pointer<::particle> __call__create_by_type(const ::platform::type & type, ::factory::factory *pfactory = nullptr);
844
845 virtual ::pointer<::particle> __call__create_by_custom_id(const ::type_custom_id & typecustomid, ::factory::factory* pfactory = nullptr);
846
847 virtual ::pointer<::particle> __call__create_by_ipair(const ::type_iptr_pair & ipair, ::factory::factory* pfactory = nullptr);
848
849 //template < typename BASE_TYPE >
850 //inline void __call__construct_by_type_index(::pointer<BASE_TYPE>& ptype, const ::std::type_index & typeindex, ::factory::factory* pfactory = nullptr);
851
852 //virtual ::pointer < ::particle > __call__create_by_type_index(const ::std::type_index & typeindex, ::factory::factory* pfactory = nullptr);
853
854 template < typename TYPE >
855 inline void __call__construct_new(::pointer<TYPE>& ptype);
856
857 //template < typename TYPE >
858 //inline void __call__raw_construct2( ::pointer<TYPE> & p, ::factory::factory * pfactory = nullptr);
859
860 template < typename TYPE >
861 inline void __call__raw_construct(::pointer<TYPE> & p, ::factory::factory * pfactory = nullptr COMMA_REFERENCING_DEBUGGING_PARAMETERS_DECLARATION);
862
863 // template < typename T, typename ...Args >
864 // inline void __call__forward_construct(::pointer < T > &p, Args &&... args);
865
866 template < typename T, typename ...Args >
867 inline void __call__emplace_new(::pointer < T > &p, Args &&... args)
868 {
869
870 p = ::transfer(allocateø T(::std::forward<Args>(args)...));
871
872 }
873 template < typename T, typename ...Args >
874 inline void __call__emplace_new(::auto_pointer < T > &p, Args &&... args)
875 {
876
877 p = new T(::std::forward<Args>(args)...);
878
879 }
880
881 template < typename BASE_TYPE >
882 inline ::pointer<BASE_TYPE> __raw_create(::factory::factory * pfactory = nullptr);
883
884
885#if REFERENCING_DEBUGGING
886
887
888 ::particle * __call__add_referer2(const ::reference_referer & referer) const;
889
890
891#endif
892
893
894 virtual void * new_object(const_char_pointer psz);
895
896
897 virtual string as_string() const;
898
899 //virtual void to_string(string_exchange & str) const;
900
901
902 //[[nodiscard]] ::enum_type get_payload_type() const;
903
904
905 //virtual void exchange(::stream& s);
906 //virtual void exchange(::payload_stream& s);
907
908
909
910 //virtual void add_composite(::particle * pparticle);
911 //virtual void add_reference(::particle * pparticle);
912
913
914 //virtual void release_composite2(::particle * pparticle);
915 //virtual void finalize_composite(::particle * pparticle);
916 //virtual void release_reference(::particle * pparticle);
917
918
919
920
921 virtual void kick_idle();
922
923 particle & operator = (const particle & particle)
924 {
925
926 // all particle members are quite instance members.
927
928 return *this;
929
930 }
931
932
933 //virtual ::subparticle_pointer clone();
934
935
936 virtual ::user::user * user();
937 // virtual ::axis::user * axisuser();
938 // virtual ::berg::user * user();
939 // virtual ::bred::user * breduser();
940 // virtual ::core::user * coreuser();
941
942
943 virtual void process_owned_procedure_list(::procedure_list_base & procedurelist, bool & bHandled);
944
945
946 virtual memory_file_pointer create_memory_file();
947
948
949 virtual memory_file_pointer create_memory_file(::memory_base& memory);
950
951
952 virtual memory_file_pointer create_memory_file(const ::block& block);
953
954
955 virtual memory_file_pointer create_memory_file_as_copy(const memory& memory);
956
957
958 virtual memory_file_pointer create_memory_file_by_reading(::file::file* pfile);
959
960
961//template < typename T, typename ...Args >
962//inline ::pointer < T > __call__allocate(Args &&... args);
963
964
965 //inline ::particle * __call__add_referer(const ::reference_referer & referer) const;
966
967
968 virtual void assert_particle_ok() const;
969
970
971
972};
973
974
975//
976//
977//#define OPTIONAL_BASE_BODY \
978//public: \
979// void on_initialize_particle() override {} \
980// void handle(::topic *, ::handler_context *) override {}
981//
984// //void on_subject(::topic::topic*, ::handler_context*) override {} \
985//
986//#define OPTIONAL_INTERACTION_BODY \
987// OPTIONAL_BASE_BODY \
988// void install_message_routing(::channel*) override {} \
989// void on_layout(::draw2d::graphics_pointer&) {}
990//
991//
992//class optional_base1 : virtual public ::particle { OPTIONAL_BASE_BODY };
993//class optional_base2 : virtual public ::particle { OPTIONAL_BASE_BODY };
994//class optional_base3 : virtual public ::particle { OPTIONAL_BASE_BODY };
995//class optional_base4 : virtual public ::particle { OPTIONAL_BASE_BODY };
996//
997//class optional_interaction1 : virtual public ::particle { OPTIONAL_INTERACTION_BODY };
998//class optional_interaction2 : virtual public ::particle { OPTIONAL_INTERACTION_BODY };
999//class optional_interaction3 : virtual public ::particle { OPTIONAL_INTERACTION_BODY };
1000//class optional_interaction4 : virtual public ::particle { OPTIONAL_INTERACTION_BODY };
1001//
1002
1003//template < typename T >
1004//inline ::i64 release(T*& p REFERENCING_DEBUGGING_COMMA_PARAMS_DEF);
1005//{
1006//
1007// if (::is_null(p))
1008// {
1009//
1010// return -1;
1011//
1012// }
1013//
1014// ::particle* pparticle = p;
1015//
1016// try
1017// {
1018//
1019// p = nullptr;
1020//
1021// }
1022// catch (...)
1023// {
1024//
1025// informationf("exception release p = nullptr; \n");
1026//
1027// }
1028//
1029// try
1030// {
1031//
1032// return pparticle->release();
1033//
1034// }
1035// catch (...)
1036// {
1037//
1038// informationf("exception release pparticle->release() \n");
1039//
1040// }
1041//
1042// return -1;
1043//
1044//}
1045
1046
1047template < typename T >
1048inline ::i64 global_release(T*& p);
1049//{
1050//
1051// if (::is_null(p))
1052// {
1053//
1054// return -1;
1055//
1056// }
1057//
1058// try
1059// {
1060//
1061// auto i = p->release();
1062//
1063// if (i <= 0)
1064// {
1065//
1066// p = nullptr;
1067//
1068// }
1069//
1070// return i;
1071//
1072// }
1073// catch (...)
1074// {
1075//
1076// informationf("exception release pparticle->release() \n");
1077//
1078// }
1079//
1080// return -1;
1081//
1082//}
1083//
1084//
1085
1086
1087//
1088//
1089//#if !defined(_DEBUG)
1090//
1091//
1092//::i64 particle::increment_reference_count()
1093//{
1094//
1095// auto c = ++m_countReference;
1096//
1097//#if REFERENCING_DEBUGGING
1098//
1099// add_ref_history(pReferer, pszObjRefDbg);
1100//
1101//#endif
1102//
1103// return c;
1104//
1105//}
1106//
1107//
1108//::i64 particle::decrement_reference_count()
1109//{
1110//
1111// auto c = --m_countReference;
1112//
1113//#if REFERENCING_DEBUGGING
1114//
1115// if (c > 0)
1116// {
1117//
1118// dec_ref_history(pReferer, pszObjRefDbg);
1119//
1120// }
1121//
1122//#endif
1123//
1124// return c;
1125//
1126//}
1127//
1128//
1129//::i64 particle::release()
1130//{
1131//
1132// ::i64 i = decrement_reference_count();
1133//
1134// if (i == 0)
1135// {
1136//
1137// delete_this();
1138//
1139// }
1140//
1141// return i;
1142//
1143//}
1144//
1145//
1146//#endif
1147
1148
1149
1150
1151
1152
1153//virtual trace_statement trace(enum_trace_level etracelevel);
1154
1155
1156//CLASS_DECL_ACME ::trace_statement log_statement();
1157//
1158//
1159//CLASS_DECL_ACME ::trace_statement information();
1160//CLASS_DECL_ACME ::trace_statement warning();
1161//CLASS_DECL_ACME ::trace_statement error();
1162//CLASS_DECL_ACME ::trace_statement fatal();
1163//
1164//
1165//CLASS_DECL_ACME void informationf(const_char_pointer pszFormat, ...);
1166//CLASS_DECL_ACME void warningf(const_char_pointer pszFormat, ...);
1167//CLASS_DECL_ACME void errorf(const_char_pointer pszFormat, ...);
1168//CLASS_DECL_ACME void fatalf(const_char_pointer pszFormat, ...);
1169//
1170//
1171//inline void information(const ::scoped_string & scopedstr)
1172//{
1173//
1174// auto statement = log_statement();
1175//
1176// statement(e_trace_level_information);
1177//
1178// statement << scopedstr;
1179//
1180//}
1181//
1182//
1183//inline void warning(const ::scoped_string & scopedstr)
1184//{
1185//
1186// auto statement = log_statement();
1187//
1188// statement(e_trace_level_warning);
1189//
1190// statement << scopedstr;
1191//
1192//}
1193//
1194//
1195//inline void error(const ::scoped_string & scopedstr)
1196//{
1197//
1198// auto statement = log_statement();
1199//
1200// statement(e_trace_level_error);
1201//
1202// statement << scopedstr;
1203//
1204//}
1205//
1206//
1207//
1208//inline void fatal(const ::scoped_string & scopedstr)
1209//{
1210//
1211// auto statement = log_statement();
1212//
1213// statement(e_trace_level_fatal);
1214//
1215// statement << scopedstr;
1216//
1217//}
1218
1219
1220//#if defined(__STD_FORMAT__)
1221//
1222//
1224//template<typename... Args>
1225//inline void information(const std::format_string<Args...> fmt, Args&&... args)
1226//{
1227//
1228// auto statement = log_statement();
1229//
1230// statement(e_trace_level_information);
1231//
1232// statement.format_output(fmt, std::forward<Args>(args)...);
1233//
1234//}
1235//
1236//
1238//template<typename... Args>
1239//inline void warning(const std::format_string<Args...> fmt, Args&&... args)
1240//{
1241//
1242// auto statement = log_statement();
1243//
1244// statement(e_trace_level_warning);
1245//
1246// statement.format_output(fmt, std::forward<Args>(args)...);
1247//
1248//}
1249//
1251//template<typename... Args>
1252//void error(const std::format_string<Args...> fmt, Args&&... args)
1253//{
1254//
1255// auto statement = log_statement();
1256//
1257// statement(e_trace_level_error);
1258//
1259// statement.format_output(fmt, std::forward<Args>(args)...);
1260//
1261//}
1262//
1263//
1265//template<typename... Args>
1266//void fatal(const std::format_string<Args...> fmt, Args&&... args)
1267//{
1268//
1269// auto statement = log_statement();
1270//
1271// statement(e_trace_level_fatal);
1272//
1273// statement.format_output(fmt, std::forward<Args>(args)...);
1274//
1275//}
1276//
1277//
1278//#endif
1279
1280
1281inline bool is_ok(const ::particle * pparticleConst)
1282{
1283
1284 ::particle * pparticle = (::particle *)pparticleConst;
1285
1286 return ::is_set(pparticle) && pparticle->is_ok();
1287
1288}
1289
1290
1292template < typename T >
1293inline ::i64 release(T *& p);
1294//inline ::i64 release(T *& p COMMA_REFERENCING_DEBUGGING_RELEASER_PARAMETERS_DECLARATION);
1295
1296
1298template < typename T >
1299inline ::i64 global_release(T *& p);
1300
1301
1302template < typename TYPE, typename T >
1303void assign(::pointer<TYPE> & ptr, T * p);
1304
1305template < typename TYPE >
1306::i64 release(::pointer<TYPE> & ptr);
1307//::i64 release(::pointer<TYPE> & ptr COMMA_REFERENCING_DEBUGGING_RELEASER_PARAMETERS_DECLARATION);
1308
1309//template < typename TYPE >
1310//::i64 release(TYPE *& p);
1311
1312
1313
1314
1315//#if REFERENCING_DEBUGGING
1316//
1317//
1318//namespace allocator
1319//{
1320//
1321//
1322// CLASS_DECL_ACME ::reference_referer * aaa_defer_add_referer(const ::reference_referer & referer);
1323// CLASS_DECL_ACME ::reference_referer * aaa_add_referer(const ::reference_referer & referer);
1324// CLASS_DECL_ACME ::reference_referer * aaa_defer_get_referer(::particle * p, const ::reference_referer & referer);
1325// CLASS_DECL_ACME ::reference_referer * aaa_get_referer();
1326// CLASS_DECL_ACME ::reference_referer * aaa_pop_referer();
1327// CLASS_DECL_ACME void aaa_defer_erase_referer();
1328// CLASS_DECL_ACME void aaa_erase_referer(::reference_referer * preferer);
1329//
1330//
1331// CLASS_DECL_ACME void aaa_add_releaser(::reference_referer * preferer);
1332// CLASS_DECL_ACME::reference_referer * aaa_get_releaser();
1333// CLASS_DECL_ACME::reference_referer * aaa_pop_releaser();
1334// CLASS_DECL_ACME void aaa_defer_erase_releaser();
1335// CLASS_DECL_ACME void aaa_erase_releaser(::reference_referer * preferer);
1336//
1337//
1338//} // namespace allocator
1339//
1340//
1341//#endif
1342
1343
1344namespace allocator
1345{
1346
1347 class accessor;
1348
1349} // namespace allocator
1350
1351
1352#if REFERENCING_DEBUGGING
1353
1354
1355class refdbg_top_track
1356{
1357public:
1358
1359 ::particle* m_p;
1360 refdbg_top_track(::particle* p)
1361
1362 {
1363 if (refdbg_add_top_track(p))
1364 {
1365 m_p = p;
1366 }
1367 else
1368 {
1369 m_p = nullptr;
1370 }
1371 }
1372 ~refdbg_top_track()
1373 {
1374 if (m_p)
1375 {
1376 ::refdbg_erase_top_track(m_p);
1377 }
1378 }
1379
1380};
1381
1382
1383
1384
1385//class abc
1386//{
1387//public:
1388//
1389// template < typename T >
1390// T * operator << (T* p)
1391// {
1392//
1393// return p;
1394// }
1395//
1396//};
1397//CLASS_DECL_ACME __call__add_referer(const ::reference_referer & referer, ::reference_referer ** ppreferer = nullptr);
1398
1399#endif
1400
1401
1402template < non_particle NON_PARTICLE >
1403class now_a_particle :
1404 public NON_PARTICLE,
1405 virtual public ::particle
1406{
1407public:
1408
1409 template < typename... Args >
1410 now_a_particle(Args&&... args) :
1411 NON_PARTICLE(::std::forward<Args>(args)...)
1412 {
1413
1414 }
1415
1416};
1417
1418
1419CLASS_DECL_ACME ::trace_statement debug();
1420CLASS_DECL_ACME ::trace_statement information();
1421CLASS_DECL_ACME ::trace_statement warning();
1422CLASS_DECL_ACME ::trace_statement error();
1423CLASS_DECL_ACME ::trace_statement fatal();
1424
1425
1426CLASS_DECL_ACME void debug(const ::scoped_string& scopedstr);
1427CLASS_DECL_ACME void information(const ::scoped_string& scopedstr);
1428CLASS_DECL_ACME void warning(const ::scoped_string& scopedstr);
1429CLASS_DECL_ACME void error(const ::scoped_string& scopedstr);
1430CLASS_DECL_ACME void fatal(const ::scoped_string& scopedstr);
1431
1432
1433template <typename... Args>
1434void debug(std::string_view fmt, Args&&... args)
1435{
1436 ::debug(::format(fmt, std::make_format_args(args...)));
1437}
1438template <typename... Args>
1439void information(const std::format_string<Args...> fmt, Args&&... args)
1440{
1441 ::information(::format<Args...>(fmt, std::forward<Args>(args)...));
1442}
1443template <typename... Args>
1444void warning(const std::format_string<Args...> fmt, Args&&... args)
1445{
1446 ::warning(::format<Args...>(fmt, std::forward<Args>(args)...));
1447}
1448template <typename... Args>
1449void error(const std::format_string<Args...> fmt, Args&&... args)
1450{
1451 ::error(::format<Args...>(fmt, std::forward<Args>(args)...));
1452}
1453template <typename... Args>
1454void fatal(const std::format_string<Args...> fmt, Args&&... args)
1455{
1456 ::fatal(::format<Args...>(fmt, std::forward<Args>(args)...));
1457}
1458
1459
1460CLASS_DECL_ACME void debugf(const ::ansi_character* pszFormat, ...);
1461CLASS_DECL_ACME void informationf(const ::ansi_character* pszFormat, ...);
1462CLASS_DECL_ACME void warningf(const ::ansi_character* pszFormat, ...);
1463CLASS_DECL_ACME void errorf(const ::ansi_character* pszFormat, ...);
1464CLASS_DECL_ACME void fatalf(const ::ansi_character* pszFormat, ...);
1465
1466
1467
1468// template < typename TYPE, ::enum_flag t_eflag = e_flag_none, ::enum_status t_estatus = undefined >
1469// class make_particle :
1470// public TYPE,
1471// virtual public ::particle
1472// {
1473// public:
1474//
1475//
1476// // Universal forwarding constructor
1477// template <typename... Args>
1478// make_particle(Args&&... args):
1479// ::particle(t_eflag, t_estatus),
1480// ::quantum(t_eflag, t_estatus),
1481// TYPE(std::forward<Args>(args)...) // forward to TYPE's ctor
1482// {
1483//
1484// }
1485//
1486//
1487// template <typename Arg>
1488// TYPE & operator=(Arg&& arg)
1489// {
1490// return TYPE::operator=(arg);
1491// }
1492//
1493// };
1494
1495
1496template < prototype_container CONTAINER >
1497inline void __assert_container_ok(const CONTAINER * pcontainer, const_char_pointer pszFileName, ::i32 nLine)
1498{
1499
1500 if (pcontainer == nullptr)
1501 {
1502
1503 if(!__assert_failed_line(pszFileName, nLine))
1504 {
1505
1506 debug_break();
1507
1508 }
1509
1510 return;
1511
1512 }
1513
1514 if (!is_memory_segment_ok(pcontainer, sizeof(::particle)))
1515 {
1516
1517 if (__assert_failed_line(pszFileName, nLine))
1518 {
1519
1520 debug_break();
1521
1522 }
1523
1524 return;
1525
1526 }
1527
1528 if (!is_memory_segment_ok(pcontainer, sizeof(CONTAINER)))
1529 {
1530
1531 if (!__assert_failed_line(pszFileName, nLine))
1532 {
1533
1534 debug_break();
1535
1536 }
1537
1538 return;
1539
1540 }
1541
1542 pcontainer->container_ok();
1543
1544}
1545
1546
1547//CLASS_DECL_ACME bool function_continue_predicate(::subparticle *psubparticle);
1548//
1549//inline continue_predicate_t as_continue_predicate(const ::function < bool() > & functionContinue)
1550//{
1551//
1552// return {&::function_continue_predicate, functionContinue.m_psubparticle};
1553//
1554//}
1555
1556
1557CLASS_DECL_ACME enum_dialog_result simple_ui_message_box(
1558 const ::user_interaction_sink& userinteractionsink,
1559 const ::scoped_string& scopedstrMessage,
1560 const ::scoped_string& scopedstrCaption,
1561 const ::user::e_message_box& emessagebox);
1562
1563
1564
1565
1566
Definition allocator.h:47
Definition atom.h:237
Definition crypto.h:19
Definition datetime.h:43
Definition directory_context.h:16
Definition dispatch_array.h:142
Definition dispatch_array.h:180
Definition extended_topic.h:15
Definition factory.h:201
Definition file_context.h:13
Definition handler_context.h:9
Definition item.h:93
Definition lparam.h:9
Definition mathematics.h:29
Definition nano.h:23
Definition particle.h:95
virtual lresult message_handler(::user::enum_message eusermessage, ::wparam wparam, ::lparam lparam)
virtual void send_call(const ::call & call);
Definition particle.cpp:1880
::pointer< T > create_clone(const T *pSource)
consumes a referer
Definition particle.h:682
::pointer< T > __call__create_new_clone(const T *pSource)
consumes a referer
Definition particle.h:713
Definition payload.h:54
Definition application.h:64
Definition http.h:22
Definition node.h:33
Definition platform.h:54
Definition session.h:38
Definition system.h:53
Definition tracer.h:19
Definition property_set.h:512
Definition prototype.h:11
Definition ptr.h:18
Definition quantum.h:22
Definition subparticle.h:78
Definition topic.h:17
Definition trace_statement.h:36
void format_output(std::format_string< Args... > fmt, Args &&... args)
if defined(STD_FORMAT)
Definition trace_statement.h:73
Definition url_context.h:14
Definition user_interaction_sink.h:13
Definition wparam.h:10
Definition solaris_file_watcher.cpp:34
Definition filesystem.h:16
include "thread/AutoLock.h"
Definition _forward_declaration.h:877
Created by camilo on 2026-05-28 12:34 <3ThomasBorregaardSørensen!! Mummi!! Bilbo!!
Definition _.h:67
Definition particle.h:89