9class CLASS_DECL_APEX object :
10 virtual public ::manager
15 ::pointer<matter_array> m_pcompositea;
16 ::pointer<matter_array> m_preferencea;
26 object() : m_pmeta(
nullptr) { }
28 object(enum_default_initialization) : ::object() {};
35 virtual ::i64 increment_reference_count()
override;
36 virtual ::i64 decrement_reference_count()
override;
37 virtual ::i64 release()
override;
43 virtual ::i64 increment_reference_count();
44 virtual ::i64 decrement_reference_count();
45 virtual ::i64 release();
53 inline matter_array* _composite_array() {
return m_pcompositea; }
54 inline matter_array* _reference_array() {
return m_preferencea; }
57 inline matter_array& composite_array() { ::defer_construct_newø(m_pcompositea);
return *m_pcompositea; }
58 inline matter_array& reference_array() { ::defer_construct_newø(m_preferencea);
return *m_preferencea; }
62 virtual void process_exit_status(const ::e_status & estatus);
80 template <
typename BASE_TYPE >
81 ::pointer<BASE_TYPE>
file_as(const ::payload& payloadFile);
84 virtual void add_procedure(const ::atom& idRoutine, const ::procedure & procedure);
87 virtual void add_each_routine_from(const ::atom& idRoutine, ::object* pobjectSource);
90 virtual array < ::procedure >* routinea(const ::atom& idRoutine);
93 virtual void call_routine(const ::atom& idRoutine);
96 inline ::payload context_value(const ::payload& payload);
99 virtual void task_erase(
::task* ptask)
override;
102 virtual void sleep(
const class ::time&
time);
105 template <
typename BASE_TYPE >
106 void save_to(const ::payload& payloadFile, BASE_TYPE* pparticle);
108 virtual void initialize(::particle * pparticle)
override;
109 virtual void destroy()
override;
111 inline const_char_pointer topic_text();
113 context& __context(const ::payload& payload);
115 ::payload __context_value(const ::payload& payload);
117 virtual void set_topic_text(const ::scoped_string & scopedstr);
119 void create_object_meta();
121 inline void defer_object_meta() {
if (::is_null(m_pmeta)) create_object_meta(); }
123 inline ::object_meta* get_meta() { defer_object_meta();
return m_pmeta; }
125 inline ::handler_context* get_context()
const {
return m_papplication; }
127 inline ::thread* get_thread()
const {
return m_pthread; }
129 inline ::application* get_app()
const {
return m_papplication; }
131 inline ::apex::session* get_session()
const {
return m_psession; }
139 virtual string get_text(const ::payload& payload, const ::atom& atom)
override;
142 virtual void set_context(::handler_context* pcontext);
143 virtual void set_context_thread(::thread* pthread);
144 virtual void set_context_app(::apex::application* pappContext);
145 virtual void set_context_session(::apex::session* psessionContext);
149 inline void set_context(::handler_context* pcontext);
150 inline void set_context_thread(::thread* pthread);
151 inline void set_context_app(::apex::application* pappContext);
152 inline void set_context_session(::apex::session* psessionContext);
163 virtual void operator()()
override;
166 inline ::i64 get_ref_count()
169 return m_countReference;
178 virtual void dev_log(const ::scoped_string & scopedstr)
const;
180 ::object& operator = (const ::payload& payload);
188 virtual void to_string(
const string_exchange& str)
const override;
213 template <
typename BASE_TYPE >
214 inline void constructø(::pointer<BASE_TYPE> pusermessage);
216 template <
typename BASE_TYPE,
typename SOURCE >
217 inline void constructø(::pointer<BASE_TYPE> pusermessage,
const SOURCE* psource);
219 template <
typename BASE_TYPE,
typename SOURCE >
220 inline void constructø(::pointer<BASE_TYPE> pusermessage, const ::pointer<SOURCE>psource);
222 template <
typename BASE_TYPE >
223 inline void øconstruct_by_id(::pointer<BASE_TYPE> pusermessage, const ::atom& atom);
225 template <
typename BASE_TYPE >
226 inline void øraw_construct(::pointer<BASE_TYPE> pusermessage);
228 template <
typename BASE_TYPE,
typename SOURCE >
229 inline void øraw_construct(::pointer<BASE_TYPE> pusermessage,
const SOURCE* psource);
231 template <
typename BASE_TYPE,
typename SOURCE >
232 inline void øraw_construct(::pointer<BASE_TYPE> pusermessage, const ::pointer<SOURCE>psource);
234 template <
typename TYPE >
235 inline void __raw_construct_new(::pointer<TYPE> ptype);
237 template <
typename TYPE >
238 inline void construct_newø(::pointer<TYPE> ptype);
243 template <
typename BASE_TYPE >
244 inline void defer_constructø(::pointer<BASE_TYPE> pusermessage) {
return !pusermessage ? constructø(pusermessage) : void(::success); }
246 template <
typename BASE_TYPE >
247 inline void __defer_id_compose(::pointer<BASE_TYPE> pusermessage, const ::atom& atom) {
return !pusermessage ? øconstruct_by_id(pusermessage) : void(::success); }
249 template <
typename TYPE >
250 inline void __defer_raw_compose_new(::pointer<TYPE> ptype) {
return !ptype ? __raw_construct_new(ptype) : void(::success); }
252 template <
typename TYPE >
253 inline void defer_construct_newø(::pointer<TYPE> ptype) {
return !ptype ? construct_newø(ptype) : void(::success); }
266 template <
typename BASE_TYPE >
267 inline void __release(::pointer<BASE_TYPE> pcomposite);
269 template <
typename BASE_TYPE >
270 inline void __release(::pointer<BASE_TYPE> preference);
272 template <
typename SOURCE >
273 inline void __release(::pointer<SOURCE> psource);
276 virtual void add_composite(::particle * pparticle)
override;
277 virtual void add_reference(::particle * pparticle)
override;
280 virtual void release_composite2(::particle * pparticle)
override;
281 virtual void finalize_composite(::particle * pparticle)
override;
282 virtual void release_reference(::particle * pparticle)
override;
285 template <
typename BASE_TYPE >
286 inline void add_composite(::pointer<BASE_TYPE> pcomposite);
288 template <
typename BASE_TYPE,
typename SOURCE >
289 inline void __refer(::pointer<BASE_TYPE> preference,
const SOURCE* psource);
291 template <
typename BASE_TYPE,
typename SOURCE >
292 inline void __refer(::pointer<BASE_TYPE> preference, const ::pointer<SOURCE>psource);
294 template <
typename BASE_TYPE,
typename SOURCE >
295 inline void __refer(::pointer<BASE_TYPE> preference, const ::prototype::member < SOURCE >& psource);
297 template <
typename SOURCE >
298 inline void add_reference(SOURCE* psource);
300 template <
typename SOURCE >
301 inline void add_reference(::pointer<SOURCE> psource);
303 template <
typename SOURCE >
304 inline void add_reference(::pointer<SOURCE> psource);
306 virtual void delete_this()
override;
308 virtual void destruct();
310 static void system(const ::scoped_string & scopedstrProjectName);
312 virtual void enable_application_events(
bool bEnable =
true);
314 virtual void handle_exception(const ::exception& e);
316 virtual void top_handle_exception(const ::exception& e);
318 virtual void process_exception(const ::exception& e);
321 ::object* parent_property_set_holder()
const override;
323 void copy_from(
const object& o);
326 virtual string get_tag()
const;
327 virtual bool is_thread()
const override;
328 virtual bool task_get_run()
const;
329 virtual bool is_running()
const;
330 virtual void child_post_quit(const ::scoped_string & scopedstrTag);
331 virtual void child_post_quit_and_wait(const ::scoped_string & scopedstrTag,
const time& time);
332 virtual void finish(::property_object* pcontextobjectFinish =
nullptr)
override;
333 virtual void set_finish(::property_object* pcontextobjectFinish)
override;
334 virtual void set_finish_composites(::property_object* pcontextobjectFinish)
override;
335 virtual void on_finish()
override;
338 virtual void defer_update_object_id();
339 virtual ::atom calc_default_object_id()
const;
342 virtual void install_message_routing(::channel* pchannel);
344 void message_receiver_destruct();
346 void _001OnUpdate(::message::message* pmessage);
348 virtual void request_file(const ::payload& payloadFile);
350 virtual void request_file(const ::payload& payloadFile, ::payload varQuery);
352 virtual void request(arguments arguments);
354 virtual void do_request(::create* pcreate);
356 virtual pointer< ::extended::future < ::conversation > > message_box(const ::scoped_string & scopedstrMessage, const ::scoped_string & scopedstrTitle =
nullptr, const ::user::e_message_box& emessagebox = ::user::e_message_box_ok);
374 virtual void release_references();
376 virtual ::pointer<::matter>running(const ::scoped_string & scopedstrTag)
const;
378 virtual bool ___is_reference(::particle * pparticle)
const;
380 virtual bool __is_composite(::particle * pparticle)
const;
382 virtual bool __is_child_task(::particle * ptask)
const;
384 virtual void on_finalize();
386 virtual void call_request(::create* pcreate);
400 virtual void run()
override;
402 virtual string lstr(const ::atom& atom, const ::scoped_string & scopedstrDefault =
"");
404 virtual string __get_text(const ::scoped_string & scopedstr);
418 bool IsSerializable()
const;
424 void single_fork(const ::procedure_array& routinea);
425 void multiple_fork(const ::procedure_array& routinea);
427 using topic::manager::defer_fork;
429 template <
typename THREAD >
430 inline ::pointer<THREAD> defer_fork(::pointer<THREAD>pthread, const ::procedure & procedure)
433 if (pthread && pthread->is_running())
440 pthread->start(routine);
447 template <
typename THREAD >
448 inline ::pointer<THREAD> defer_fork(::pointer<THREAD>pthread)
451 if (pthread && pthread->is_running())
458 pthread->begin_thread();
465 inline void defer_fork(::thread_pointer& pthread, const ::procedure & procedure);
481 ::thread_pointer fork(const ::add_procedure & procedure);
488 inline ::task_pointer opt_fork(const ::procedure & procedure)
491 auto ptask = ::get_task();
493 synchronous_lock synchronouslock(ptask->synchronization(), DEFAULT_SYNCHRONOUS_LOCK_SUFFIX);
495 if (ptask && ptask->m_bIsPredicate)
504 return launch(routine);
513 template <
typename PREDICATE >
514 inline auto new_predicate_task(PREDICATE pred);
517 template <
typename TYPE >
518 inline auto async(
void (TYPE::* pfnMemberProcedure)())
521 return fork([
this, pfnMemberProcedure]()
524 TYPE* ptype =
dynamic_cast <TYPE*
> (
this);
526 (ptype->*pfnMemberProcedure)();
533 inline ::thread_pointer predicate_run(
bool bSync, const ::add_procedure & procedure);
535 ::thread_pointer begin(
536 ::enum_priority epriority = ::e_priority_normal,
537 ::u32 nStackSize = 0,
538 ::u32 dwCreateFlags = 0 ARG_SEC_ATTRS_DEF);
553 virtual ::file_pointer get_file(const ::payload& payloadFile, ::file::e_open eopen);
554 inline ::file_pointer get_reader(const ::payload& payloadFile, ::file::e_open eopen = ::file::e_open_binary);
555 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);
601 template <
typename TYPE >
602 ::thread_pointer start_below_normal(
void (TYPE::* pfn)())
605 return fork(pfn, ::e_priority_below_normal);
613 template <
typename TYPE >
614 void __construct_below_normal(::thread_pointer& p,
void (TYPE::* pfn)());
617 template <
typename TYPE >
618 ::thread_pointer __start_thread(const ::atom& atom,
void(TYPE::* pfn)(), enum_priority epriority = e_priority_normal);
621 virtual matter* get_taskpool_container()
override;