acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
node_acme.h
1//
2// Created by camilo on 2024-10-24 22:26 <3ThomasBorregaardSorensen!!
3//
4#pragma once
5
6
7#include "acme/constant/application_capability.h"
8#include "acme/constant/element.h"
9#include "acme/exception/__string.h"
10#include "acme/operating_system/security_attributes.h"
11#include "acme/platform/serial_shared.h"
12//#include "acme/exception/status.h"
14//#include "acme/prototype/prototype/pointer.h"
15#include "acme/prototype/collection/atom_array.h"
16#include "acme/prototype/collection/string_map.h"
17//#include "acme/prototype/time/time.h"
18#include "shell.h"
19
20
21namespace platform
22
23{
24
25 struct CLASS_DECL_ACME acme_node_layer_t
26 {
27
28 //bool m_bDropboxCalculated;
29 //bool m_bDropbox;
30 //::file::path m_pathDropbox;
31
32
33 bool m_bOneDriveCalculated;
34 bool m_bOneDrive;
35 ::file::path m_pathOneDrive;
36
37
38 protected:
39
40
41 //::procedure_array m_routineaPost;
42
43
44 public:
45
46
47 union
48 {
49
50 ::u64 m_uNodeFlags;
51
52 bool m_bHasNodePostedSystemInitialRequest: 1;
53
54 };
55
56
57 htask m_htaskSystem;
58 //::apex::node* m_papexnode;
59 //::aura::node* m_pauranode;
60
61 //::acme_posix::node* m_pAcmePosix;
62 //::apex_posix::node* m_pApexPosix;
63 //::aura_posix::node* m_pAuraPosix;
64
65 //::IDENTIFIER_SUFFIX_OPERATING_SYSTEM(acme_)::node* m_pAcmePlatform;
66 //::IDENTIFIER_SUFFIX_OPERATING_SYSTEM(apex_)::node* m_pApexPlatform;
67 //::IDENTIFIER_SUFFIX_OPERATING_SYSTEM(aura_)::node* m_pAuraPlatform;
68
69
70 //::particle_pointer m_pparticleQuit;
71
72
73 //::particle_pointer m_pparticleStandardIOSynchronization;
74
75
76 bool m_bCallStackInitialized;
77 bool m_bUpdateCallStack;
78
79
80 string m_strTheme;
81 string m_strIconTheme;
82
83 map_base<enum_character_set, ::string> m_mapCharacterSetDefaultSampleText;
84 string_map_base<enum_character_set> m_mapCharacterSetEnum;
85
86 ::os_theme_colors* m_pthemecolors;
87
88 //:: IDENTIFIER_PREFIX_OPERATING_SYSTEM(_node)::node * m_pNode;
89
90
91 //::windowing_win32::node * m_pWindowingWin32Node;
92 //::windowing_universal_windows::node * m_pWindowingUniversalWindowsNode;
93
94
95 //::windowing_x11::node * m_pNodeX11;
96 //::windowing_xcb::node * m_pNodeXcb;
97 //::node_gtk3::node* m_pNodeGtk3;
98 //::node_gtk4::node* m_pNodeGtk4;
99 //::node_gtk_based::node* m_pNodeGtkBased;
100 //::node_kde5::node* m_pNodeKDE5;
101 //::node_kde6::node* m_pNodeKDE6;
102 //::node_xfce::node* m_pNodeXfce;
103 //::operating_ambient_gtk_based::node* m_pNodeDesktopEnvironmentGtkBased;
104 //::desktop_environment_kde::node* m_pNodeDesktopEnvironmentKDE;
105 //::desktop_environment_xfce::node* m_pNodeDesktopEnvironmentXfce;
106
107 //bool m_bUserDarkMode;
108
109 //bool m_bOperatingSystemDarkMode;
110 //::i32 m_iWeatherDarkness;
111 ::file::path m_pathModule;
112
113
114 enum_application_capability_array m_eapplicationcapabilitya;
116
117
118 };
119
120
121 class CLASS_DECL_ACME acme_node_layer
122 {
123 public:
124
125
126 virtual ::string get_file_type_identifier(const ::file::path& path);
127
128
129 virtual void call_async(const ::scoped_string & scopedstrPath, const ::scoped_string & scopedstrParam, const ::scoped_string & scopedstrDir,
130 ::e_display edisplay, bool bPrivileged, ::u32* puiPid = nullptr);
131
132
133 virtual void call_sync(const ::scoped_string & scopedstrPath, const ::scoped_string & scopedstrParam, const ::scoped_string & scopedstrDir,
134 ::e_display edisplay, const class time& timeTimeout, ::property_set & set, ::i32* piExitCode);
135
136
137 virtual ::process_identifier_array module_list_file_processes_identifiers(const ::scoped_string& scopedstr);
138
139
140 virtual ::enum_id key_command(const ::user::e_key & ekey);
141 //virtual ::file::path synchronously_request_document_folder();
142
143 virtual void notify_system_started();
144 //idaPid = pnode->(path, false);
145
146 virtual void defer_install_store_dependencies();
147
148 virtual ::particle_pointer create_mutex();
149
150
151 virtual void initialize(::particle* pparticle);
152
153
154 virtual void node_application_on_status(const_char_pointer pszStatus, void* p = nullptr, ::i64 hi = 0);
155
156
157 //virtual ::particle_pointer create_quit_particle(::pointer<::platform::node>& pnode);
158
159 //virtual ::particle_pointer create_quit_particle();
160 virtual ::file::path get_default_base_integration_folder();
161
162
164
165 virtual void node_main();
166
167
168 virtual void node_implement_main();
169
170
171 virtual void on_app_activated(::user::activation_token * puseractivationtoken);
172
173
174 virtual void on_system_main();
175
176
177 virtual void start_application(::pointer<::platform::node>& pnode);
178
179
180 //virtual void acme_application_main(::platform::system* psystem);
181
182
183 virtual void _will_finish_launching();
184
185 virtual void _did_finish_launching();
186
187
188 //virtual void element_quit_post_quit();
189
190
191 virtual void on_prepare_application(::platform::application * papplication);
192
193
194 virtual string audio_get_default_implementation_name();
195
196
197 virtual string multimedia_audio_get_default_implementation_name();
198
199
200 virtual string multimedia_audio_mixer_get_default_implementation_name();
201
202
203 virtual string veriwell_multimedia_music_midi_get_default_implementation_name();
204
205
206 virtual void _launch_macos_app(const ::scoped_string & scopedstrAppFolder);
207
208
209 virtual void _launch_macos_app_args(const ::scoped_string & scopedstrAppFolder, const ::scoped_string & scopedstrArgs);
210
211
212 //void on_initialize_particle() override;
213
214 virtual void initialize_memory_counter();
215
216
217 virtual void system_main();
218
219
220 virtual void reboot();
221
222
223 virtual void defer_show_system_menu(::user::mouse* pmouse);
224
225
226 virtual void install_crash_dump_reporting(const ::scoped_string & scopedstrModuleNameWithTheExeExtension);
227
228
229 virtual ::file::path module_path_source();
230
231
232 //virtual ::file::path module_path_seed();
233 //virtual ::file::path module_path_origin();
234 //::file::path update_module_path();
235
236
237 virtual ::pointer<::mutex> create_local_named_mutex(::particle* pparticleContext, bool bInitiallyOwned,
238 const ::scoped_string & scopedstrName,
239 security_attributes* psecurityattributes = nullptr);
240
241
242 virtual ::pointer<::mutex> create_global_named_mutex(::particle* pparticleContext, bool bInitiallyOwned,
243 const ::scoped_string & scopedstrName,
244 security_attributes* psecurityattributes = nullptr);
245
246
247 virtual ::pointer<::mutex> open_local_named_mutex(::particle* pparticleContext, const ::scoped_string & scopedstrName);
248
249
250 virtual ::pointer<::mutex> open_global_named_mutex(::particle* pparticleContext, const ::scoped_string & scopedstrName);
251
252
253 virtual ::pointer<::mutex> get_install_mutex(::particle* pparticleContext, const ::scoped_string & scopedstrPlatform,
254 const ::scoped_string & scopedstrSuffix);
255
256
257 virtual ::pointer<::acme::exclusive> _get_exclusive(::particle* pparticleContext, const ::scoped_string & scopedstrName,
258 ::security_attributes* psecurityattributes = nullptr);
259
260
261 virtual ::pointer<::acme::exclusive> get_exclusive(::particle* pparticleContext, const ::scoped_string & scopedstrName,
262 ::security_attributes* psecurityattributes = nullptr);
263
264
265 virtual bool erase_exclusive(const ::scoped_string & scopedstrName);
266
267
268 virtual void release_exclusive();
269
270
271 virtual bool exclusive_fails(::particle* pparticleContext, const ::scoped_string & scopedstrName,
272 security_attributes* psecurityattributes = nullptr);
273
274
275 virtual string app_id_to_app_name(const ::scoped_string & scopedstrAppId);
276
277
278 virtual string app_id_to_executable_name(const ::scoped_string & scopedstrAppId);
279
280
281 virtual bool is_application_installed(const ::file::path& pathExe, const ::scoped_string & scopedstrAppId, string& strBuild,
282 const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration,
283 const ::scoped_string & scopedstrLocale, const ::scoped_string & scopedstrSchema);
284
285
286 virtual void set_application_installed(const ::file::path& pathExe, const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrBuild,
287 const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration,
288 const ::scoped_string & scopedstrLocale, const ::scoped_string & scopedstrSchema);
289
290
291 virtual ::file::path application_installer_folder(const ::file::path& pathExe, const ::scoped_string & scopedstrAppId,
292 const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration,
293 const ::scoped_string & scopedstrLocale, const ::scoped_string & scopedstrSchema);
294
295
296 virtual ::file::path get_application_path(const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrPlatform,
297 const ::scoped_string & scopedstrConfiguration);
298
299
300 virtual ::file::path get_last_run_application_path_file(const ::scoped_string & scopedstrAppId);
301
302
303 virtual ::file::path get_last_run_application_path(const ::scoped_string & scopedstrAppId);
304
305
306 virtual void set_last_run_application_path(const ::scoped_string & scopedstrAppId);
307
308
309 virtual ::file::path _module_path();
310
311
312 //virtual void do_windowing_system_factory();
313
314
315 //virtual bool memory_counter_on();
316
317 //virtual ::file::path memory_counter_base_path();
318
319 virtual void datetime_to_file_time(::file_time_t* pfile_time, const ::earth::time& time);
320
321
322 virtual ::i32 node_init_check(::i32* pi, char_pointer ** ppz);
323
324
325 virtual void start_node();
326
327
328 virtual void install_sigchld_handler();
329
330
331 // virtual ::color::color get_system_color(enum_system_color esystemcolor);
332 //
333 // //virtual bool dark_mode() const;
334 //
335 // virtual ::os_theme_colors * _new_os_theme_colors();
336 //
337 // virtual ::os_theme_colors * _get_os_theme_colors();
338 //
339 // virtual void _fill_os_theme_colors(::os_theme_colors * pthemecolors);
340 //
341 // virtual void _set_os_theme_colors(::os_theme_colors * pthemecolors);
342 //
343 // virtual void _del_os_theme_colors(::os_theme_colors * pthemecolors);
344 //
345 // virtual void _term_os_theme_colors();
346
347 // virtual ::i32 get_simple_ui_darkness();
348
349 // virtual void set_simple_ui_darkness(::i32 iWeatherDarkness);
350
351 //virtual void set_dark_mode(bool bDark);
352
353 // virtual void fetch_user_color();
354 //
355 // virtual void _fetch_user_color();
356
357 //virtual void on_operating_system_user_theme_change();
358
359 //virtual void on_operating_system_user_color_change();
360
361 //virtual void on_operating_system_font_list_change();
362
363 //virtual string os_get_user_theme();
364
365 //virtual void os_set_user_theme(const ::scoped_string & scopedstrUserTheme);
366
367 //virtual void os_process_user_theme(const ::scoped_string & scopedstrTheme);
368
369 //virtual void os_process_user_icon_theme(const ::scoped_string & scopedstrIconTheme);
370
371// virtual bool set_wallpaper(::collection::index iScreen, const ::scoped_string & scopedstrLocalImagePath,
372// ::acme::windowing::display* pwindowingdisplay);
373//
374//
375// virtual string get_wallpaper(::collection::index iScreen, ::acme::windowing::display* pwindowingdisplay);
376
377
378 virtual string get_file_icon_path(const ::scoped_string & scopedstrPath, ::i32 iSize);
379
380
381 virtual string get_file_content_type(const ::scoped_string & scopedstrPath);
382
383
384 virtual ::i32 os_launch_uri(const ::scoped_string & scopedstrUri, char_pointer pszError = NULL, ::i32 iBufferSize = 0);
385
386
387// virtual void enable_wallpaper_change_notification();
388
389
390 virtual bool has_xcb();
391
392
393 virtual void* get_os_xcb_connection();
394
395
396 virtual bool is_wayland();
397
398
399 //void _user_send(const ::procedure & procedure) override;
400 //void _user_post(const ::procedure & procedure) override;
401
402 //virtual void _user_send(::subparticle * psubparticle) override;
403 //virtual void _user_post(::subparticle * psubparticle) override;
404
405 //void post_procedure(const ::procedure & procedure) override;
406
407 //void send_procedure(const ::procedure & procedure) override;
408
409 virtual void defer_do_main_tasks();
410
411
412 //virtual void user_post_quit();
413
414
415 //virtual void node_quit();
416
417 virtual bool should_launch_on_node(::topic* ptopic);
418
419
420 virtual bool defer_launch_on_node(::topic* ptopic);
421
422
423 virtual bool launch_on_node(::topic* ptopic);
424
425
426 virtual string get_user_name();
427
428
429 virtual void set_console_colors(::u32 dwScreenColors, ::u32 dwPopupColors, ::u32 dwWindowAlpha);
430
431
432 virtual void browse_for_folder(::file::path& pathFolder);
433
434
435 virtual void browse_for_file(::file::path& path);
436
437
438 virtual ::f64 get_time_zone();
439
440
441 virtual string font_name(enum_font efont);
442
443
444 //virtual string font_name(enum_operating_system eoperatingsystem, ::i32 iVariant, enum_font efont);
445
446
447 virtual string file_memory_map_path_from_name(const ::scoped_string & scopedstrName);
448
449
450 virtual enum_operating_system get_operating_system() const;
451
452
453 virtual void launch_app(const ::scoped_string & scopedstr, const_char_pointer *argv, ::i32 iFlags);
454
455
456 virtual ::file::path get_executable_path_by_app_id(const ::scoped_string& scopedstrAppId,
457 bool bSingleExecutableVersion);
458
459
460 virtual ::file::path get_executable_path_by_app_id(const ::scoped_string& scopedstrRepos,
461 const ::scoped_string& scopedstrApp,
462 bool bSingleExecutableVersion);
463
464
465 virtual void launch_app_by_app_id(const ::scoped_string& scopedstrAppId, bool bSingleExecutableVersion);
466
467
468 virtual ::process_identifier create_process(const ::scoped_string & scopedstrCommandLine);
469
470
471 virtual void run_silent(const ::scoped_string & scopedstrFunct, const ::scoped_string & scopedstrstrParams);
472
473
474 virtual ::file::path_array_base process_identifier_modules_paths(::process_identifier processidentifier);
475
476
477 virtual ::file::path_array_base modules_paths();
478
479
480 virtual bool load_modules_diff(string_array_base& straOld, string_array_base& straNew, const ::scoped_string & scopedstrExceptDir);
481
482
483 virtual ::process_identifier_array processes_identifiers();
484
485
486 virtual ::process_identifier_array module_path_processes_identifiers(
487 const ::scoped_string & scopedstrModulePath, bool bModuleNameIsPropertyFormatted);
488
489
490 virtual ::file::path process_identifier_module_path(::process_identifier processidentifier);
491
492
493 virtual string process_identifier_command_line(::process_identifier processidentifier);
494
495
496 //virtual bool is_shared_library_busy(::process_identifier processidentifier, const string_array_base& stra);
497
498 //virtual bool is_shared_library_busy(const string_array_base& stra);
499
500 virtual bool process_contains_module(string& strImage, ::process_identifier processidentifier,
501 const ::scoped_string & scopedstrLibrary);
502
503
504 virtual ::process_identifier_array
505 shared_library_process(string_array_base& straProcesses, const ::scoped_string & scopedstrLibrary);
506
507
508 virtual bool is_process_running(::process_identifier processidentifier);
509
510
511 virtual string get_environment_variable(const ::scoped_string& scopedstrEnvironmentVariable);
512
513
514 virtual string expand_environment_variables(const ::scoped_string& scopedstr);
515
516
517 virtual void set_environment_variable(const ::scoped_string& scopedstrEnvironmentVariable,
518 const ::scoped_string& scopedstrValue);
519
520
521 virtual void unset_environment_variable(const ::scoped_string& scopedstrEnvironmentVariable);
522
523
524 virtual string get_user_language();
525
526
527 virtual ::pointer<security_attributes> get_application_exclusivity_security_attributes();
528
529
530 virtual void register_spa_file_type(const ::scoped_string & scopedstrAppIdHandler);
531
532
533 virtual bool low_is_app_app_admin_running(const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration);
534
535
536 virtual void defer_start_program_files_app_app_admin(const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration);
537
538
539 virtual void start_program_files_app_app_admin(const ::scoped_string & scopedstrPlatform, const ::scoped_string & scopedstrConfiguration);
540
541
542 virtual void get_folder_path_from_user(::file::path& pathFolder);
543
544
545 //virtual ::string expand_environment_variables(const ::scoped_string & scopedstr);
546
547 virtual ::file::path command_find_path(const ::scoped_string & scopedstrCommand);
548
549
550 virtual void launch_application(::particle* pparticle, const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrParams,
551 ::i32 iBitCount);
552
553
554 virtual void shell_open(const ::file::path& path, const ::scoped_string & scopedstrParams = "",
555 const ::file::path& pathFolder = {});
556
557
558 //virtual void open_url(const ::scoped_string & scopedstrUrl);
559
560
561 virtual void shell_execute_async(const ::scoped_string& scopedstrFile, const ::scoped_string& scopedstrParams,
562 const ::file::path& pathWorkingDirectory = {});
563
564
565 virtual ::i32 shell_execute_sync(const ::scoped_string& scopedstrFile, const ::scoped_string& scopedstrParams,
566 const class time& timeTimeout = 1_minute,
567 const ::file::path& pathWorkingDirectory = {});
568
569
570 virtual void root_execute_async(const ::scoped_string& scopedstrFile, const ::scoped_string& scopedstrParams,
571 const ::file::path& pathWorkingDirectory = {});
572
573
574 virtual ::i32 root_execute_sync(const ::scoped_string& scopedstrFile, const ::scoped_string& scopedstrParams,
575 const class time& timeTimeout = 1_minute,
576 const ::file::path& pathWorkingDirectory = {});
577
578
579 virtual void on_start_system();
580
581
582 virtual void create_app_shortcut(::platform::application* papplication);
583
584
585 virtual void report_exception_to_user(::particle* pparticle, ::exception& exception,
586 const ::scoped_string & scopedstrMoreDetails);
587
588
589 virtual void shell_launch(const ::scoped_string & scopedstrAppId);
590
591
592 virtual bool has_application_capability(::enum_application_capability ecapability) const;
593
594
595 virtual void add_application_capability(const ::enum_application_capability_array& ecapabilitya);
596
597
598 virtual void on_change_application_capability();
599
600
601 virtual string get_local_mutex_name(const ::scoped_string & scopedstrAppId);
602
603
604 virtual string get_local_id_mutex_name(const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrId);
605
606
607 virtual string get_global_mutex_name(const ::scoped_string & scopedstrAppId);
608
609
610 virtual string get_global_id_mutex_name(const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrId);
611
612
613 // virtual ::string get_call_stack();
614
615
616 virtual ::process_identifier current_process_identifier();
617
618
619 virtual bool stdin_has_input_events();
620
621
622 virtual void flush_stdin_input_events();
623
624
625 virtual void flush_stdin();
626
627
628 virtual void defer_update_call_stack();
629
630
631 //#if defined(__ANDROID__)
632 // virtual string unwind_call_stack(const ::scoped_string & scopedstrFormat = call_stack_default_format(), ::i32 iSkip = CALLSTACK_DEFAULT_SKIP_TRIGGER, ::i32 iCount = -1);
633 //#else
634 virtual ::i32 get_call_stack_default_frame_count();
635
636
637 virtual void get_call_stack_frames(void** stack, ::i32& frame_count);
638
639
640 virtual string get_call_stack_trace(const ::scoped_string& scopedstrFormat = call_stack_default_format(),
641 ::i32 iSkip = CALLSTACK_DEFAULT_SKIP_TRIGGER, void* caller_address = nullptr,
642 ::i32 iCount = -1);
643
644
645 virtual string get_call_stack_trace(void** stack, ::i32 frame_count,
646 const ::scoped_string& scopedstrFormat = call_stack_default_format(),
647 ::i32 iSkip = CALLSTACK_DEFAULT_SKIP_TRIGGER, void* caller_address = nullptr,
648 ::i32 iCount = -1);
649
650
651 //#endif
652 virtual string _get_call_stack_trace(const ::scoped_string& scopedstrFormat = call_stack_default_format(),
653 ::i32 iSkip = CALLSTACK_DEFAULT_SKIP_TRIGGER, void* caller_address = nullptr,
654 ::i32 iCount = -1);
655
656
657 virtual string _get_call_stack_trace(void** stack, ::i32 frame_count,
658 const ::scoped_string& scopedstrFormat = call_stack_default_format(),
659 ::i32 iSkip = CALLSTACK_DEFAULT_SKIP_TRIGGER, void* caller_address = nullptr,
660 ::i32 iCount = -1);
661
662
663 virtual ::string get_command_line();
664
665
666 //virtual ::pointer<::acme::exclusive> get_exclusive(const ::scoped_string & scopedstr, const security_attributes & securityattributes = nullptr);
667
668
669 virtual ::i32 get_current_processor_index();
670
671
672 virtual ::i32 get_current_process_maximum_affinity();
673
674
675 virtual ::i32 get_current_process_affinity_order();
676
677
678 virtual ::u64 translate_processor_affinity(::i32 i);
679
680
681 //CLASS_DECL_ACME string expand_env(const ::scoped_string & scopedstr);
682 //CLASS_DECL_ACME string xxxget_environment_variable(const ::scoped_string & scopedstrEnvironmentVariable);
683 //CLASS_DECL_ACME string ca2_command_line();
684
685
686 //virtual ::i32 process_get_status();
687 //virtual void process_set_status(::i32 iStatus);
688 //virtual ::i32 * process_get_pargc();
689 //virtual ::i32 process_get_argc();
690
691
692 virtual bool set_process_priority(::enum_priority epriority);
693
694
695 //virtual string time_binary_platform(const ::scoped_string & scopedstrPlatform);
696
697
698 //
699 //#if !defined(UNIVERSAL_WINDOWS)
700 //
701 // //virtual ::i32 call_async(const ::scoped_string & scopedstrPath, const ::scoped_string & scopedstrParam, const ::scoped_string & scopedstrDir, ::e_display edisplay, bool bPrivileged, ::u32 * puiPid = nullptr);
702 //
703 // typedef ::i32 CALLSYNCONRETRY(::i32 iTry, uptr dwParam);
704 //
705 // typedef CALLSYNCONRETRY * PFNCALLSYNCONRETRY;
706 //
707 // //CLASS_DECL_ACME ::u32 call_sync(const ::scoped_string & scopedstrPath, const ::scoped_string & scopedstrParam, const ::scoped_string & scopedstrDir, ::e_display edisplay, const class time & timeTimeout, ::property_set & set);
708 //
709 //#endif
710
711
712 //#if !defined(UNIVERSAL_WINDOWS) && !defined(LINUX) && !defined(__APPLE__) && !defined(__ANDROID__)
713 //
714 //
715 // //virtual ::i32 get_current_processor_index();
716 //
717 // //virtual ::i32 get_current_process_maximum_affinity();
718 //
719 // //virtual ::i32 get_current_process_affinity_order();
720 //
721 //
722 //#endif
723
724
725 //virtual string expand_env(const ::scoped_string & scopedstr);
726
727 //CLASS_DECL_ACME string consume_command_line_parameter(const ::scoped_string & scopedstrCommandLine, const ::string * & pszEndPtr);
728 //CLASS_DECL_ACME bool is_command_line_parameter_true(string& strValue, const ::scoped_string & scopedstrCommandLine, const ::scoped_string & scopedstrParam, bool bDefault = false);
729 //CLASS_DECL_ACME bool get_command_line_parameter(string & strValue, const ::scoped_string & scopedstrCommandLine, const ::scoped_string & scopedstrParam);
730 //CLASS_DECL_ACME bool get_command_line_parameter(string & strValue, const ::scoped_string & scopedstrCommandLine, const ::scoped_string & scopedstrParam, const ::scoped_string & scopedstrDefault);
731 //CLASS_DECL_ACME string get_command_line_parameter(const ::scoped_string & scopedstrCommandLine, const ::scoped_string & scopedstrParam);
732
733
734 //virtual bool launch_command(const ::scoped_string & scopedstrCommand);
735
736
737 virtual string process_configuration_name();
738
739
740 virtual string time_binary_platform(const ::scoped_string & scopedstrPlatform);
741
742
743 virtual string process_platform_name();
744
745
746 //virtual string process_platform_name();
747 virtual string process_version_dir_name();
748
749
750 virtual ::file::path core_app_path(const ::scoped_string & scopedstrApp);
751
752
753 //virtual bool is_shared_library_busy(::process_identifier processidentifier, const string_array_base & stra);
754 //virtual bool is_shared_library_busy(const string_array_base & stra);
755
756
757 // virtual bool launch_application(::particle * pparticle, const ::scoped_string & scopedstrAppId, const ::scoped_string & scopedstrParams, ::i32 iBitCount);
758
759
760 //virtual bool shell_execute_async(const ::scoped_string & scopedstrFile, const ::scoped_string & scopedstrParams);
761 //virtual bool shell_execute_sync(const ::scoped_string & scopedstrFile, const ::scoped_string & scopedstrParams, const class time & timeTimeout = 1_minute);
762
763 //virtual bool root_execute_async(const ::scoped_string & scopedstrFile, const ::scoped_string & scopedstrParams);
764 //virtual bool root_execute_sync(const ::scoped_string & scopedstrFile, const ::scoped_string & scopedstrParams, const class time & timeTimeout = 1_minute);
765
766
767 //CLASS_DECL_ACME bool os_init_application();
768 //CLASS_DECL_ACME void os_term_application();
769
770
771 virtual string executable_title_from_appid(const ::scoped_string & scopedstrAppId);
772
773
774 //CLASS_DECL_ACME ::u32 get_current_process_id();
775
776
777 //virtual string process_version_dir_name();
778
779
780 virtual ::i32 is_debug_build();
781
782
783 virtual ::i32 is_release_build();
784
785
786 //virtual bool succeeded(const ::error_code& errorcode);
787 //virtual bool failed(const ::error_code& errorcode);
788
789
790 virtual void _node_file_dialog(::file::file_dialog* pdialog);
791
792
793 virtual void _node_folder_dialog(::file::folder_dialog* pdialog);
794
795
796 virtual ::pointer<::file::file_dialog> node_file_dialog();
797
798
799 virtual ::pointer<::file::folder_dialog> node_folder_dialog();
800
801
802 virtual ::file::path library_file_name(const ::scoped_string& scopedstr);
803
804
805 virtual ::string default_component_implementation(const ::scoped_string& scopedstrComponentName);
806
807
808 virtual void integration_factory();
809
810
811 //virtual void unzip_to_folder(const ::file::path& pathFolder, const ::file::path& pathZip);
812
813
814 virtual ::string get_user_permanent_environment_variable(const ::scoped_string& scopedstr);
815
816
817 virtual ::string get_system_permanent_environment_variable(const ::scoped_string& scopedstr);
818
819
820 virtual void set_user_permanent_environment_variable(const ::scoped_string& scopedstr,
821 const ::scoped_string& strPayload,
822 bool bNoSystemNotify = false);
823
824
825 virtual void system_notify_environment_variable_change();
826
827
828 virtual void update_process_environment_variables();
829
830
831 virtual void set_user_run_once(const ::scoped_string& scopedstrLabel, const ::scoped_string& scopedstrCommand);
832
833
834 virtual ::string operating_system_store_release();
835
836
837 virtual ::pointer<::operating_system::summary> operating_system_summary();
838
839
840 //virtual void module_path_main_window_post_close(const ::scoped_string & scopestr);
841
842
843 // virtual ::pointer<::operating_system::application> module_path_application(const ::scoped_string& scopestr);
844 //
845 //
846 // virtual ::pointer<::operating_system::application> process_identifier_application(
847 // ::process_identifier processidentifier);
848 //
849 //
850 // virtual ::pointer<::operating_system::application> application_predicate(
851 // const ::function<bool(::operating_system::application* papplication)>& function);
852
853
854 virtual ::string get_character_set_default_sample_text(enum_character_set echaracterset);
855
856
857 virtual void load_character_set_default_sample_text();
858
859
860 virtual void play_sound(const ::file::path& path);
861
862
863 //virtual void speak(const ::scoped_string& scopedstr);
864
865 virtual ::string operating_system_application_version();
866
867
868
869
870 virtual bool is_application_running_good_effort(const ::scoped_string& scopedstrRepos,
871 const ::scoped_string& scopedstrApp);
872
873
874 virtual bool are_framework_shared_libraries_busy(const ::scoped_string& scopedstrRepos,
875 const ::scoped_string& scopedstrApp);
876
877 virtual bool are_any_shared_libraries_mapped(const ::file::path_array_base & patha);
878
879
880 virtual ::string get_error_code_message(const ::error_code& errorcode);
881
882
883 virtual bool defer_enumerate_protocol(::file::listing_base& listing);
884
885
886 virtual bool defer_process_protocol_path(::file::path& path);
887
888
889 //void finalize() override;
890
891 //virtual string get_command_line();
892
893 //virtual void reboot();
894 virtual void shutdown(bool bPowerOff);
895
896
897 virtual void terminate_processes_by_title(const ::scoped_string & scopedstrName);
898
899
900 //#ifdef WINDOWS
901 // virtual ::file::path get_module_path(HMODULE hmodule);
902 //#endif
903
904 virtual ::process_identifier_array module_path_processes_identifiers(const ::scoped_string& scopedstrName);
905
906
907 virtual ::process_identifier_array title_processes_identifiers(const ::scoped_string& scopedstrName);
908
909
910 //virtual ::process_identifier_array processes_identifiers();
911 //virtual ::file::path process_identifier_module_path(::process_identifier dwPid);
912
913
914 //virtual ::process_identifier current_process_identifier();
915
916 virtual ::payload connection_settings_get_auto_detect();
917
918
919 virtual ::payload connection_settings_get_auto_config_url();
920
921 virtual void open_internet_link_in_browser(const ::scoped_string& scopedstrUrl,
922 const ::scoped_string& scopedstrBrowser,
923 const ::scoped_string& scopedstrProfile = {}, const ::scoped_string & scopedstrTarget = {});
924
925 virtual void open_internet_link(const ::scoped_string& scopedstrUrl, const ::scoped_string& scopedstrProfile = {}, const ::scoped_string & scopedstrTarget = {});
926
927
928 virtual void local_machine_set_run(const ::scoped_string & scopedstrKey, const ::file::path& pathExecutable,
929 const ::scoped_string & scopedstrArguments, bool bSet);
930
931
932 virtual void local_machine_set_run_once(const ::scoped_string & scopedstrKey, const ::file::path& pathExecutable,
933 const ::scoped_string & scopedstrArguments, bool bSet);
934
935
936 virtual void current_user_set_run(const ::scoped_string & scopedstrKey, const ::file::path& pathExecutable,
937 const ::scoped_string & scopedstrArguments, bool bSet);
938
939
940 virtual void current_user_set_run_once(const ::scoped_string & scopedstrKey, const ::file::path& pathExecutable,
941 const ::scoped_string & scopedstrArguments, bool bSet);
942
943
944 virtual void defer_register_ca2_plugin_for_mozilla();
945
946
947 virtual void file_extension_get_open_with_list_keys(string_array_base& straKey, const ::scoped_string& scopedstrExtension);
948
949
950 virtual void file_extension_get_open_with_list_commands(string_array_base& straCommand, const ::scoped_string& scopedstrExtension);
951
952
953 virtual void file_association_set_default_icon(const ::scoped_string& scopedstrExtension,
954 const ::scoped_string& scopedstrExtensionNamingClass,
955 const ::file::path & pathIconPath);
956
957
958 virtual void file_association_set_shell_open_command(const ::scoped_string& scopedstrExtension,
959 const ::scoped_string& scopedstrExtensionNamingClass,
960 const ::file::path & pathExecutable,
961 const ::scoped_string & scopedstrParam);
962
963
964 virtual void file_association_get_shell_open_command(const ::scoped_string& scopedstrExtension,
965 string& strExtensionNamingClass, string& strCommand,
966 string& strParam);
967
968
969 virtual void native_full_web_browser(const ::scoped_string & scopedstr);
970
971
972 virtual void native_modern_web_browser(const ::scoped_string & scopedstr);
973
974
975 virtual void enable_service();
976
977
978 virtual void disable_service();
979
980
981 virtual void start_service();
982
983
984 virtual void stop_service();
985
986
987 virtual void enable_service(const ::scoped_string & scopedstrServiceName, const ::scoped_string & scopedstrDisplayName,
988 const ::scoped_string & scopedstrCommand, const ::scoped_string & scopedstrUser = "",
989 const ::scoped_string & scopedstrPass = "");
990
991
992 virtual void disable_service(const ::scoped_string & scopedstrServiceName);
993
994
995 virtual void start_service(const ::scoped_string & scopedstrServiceName);
996
997
998 virtual void stop_service(const ::scoped_string & scopedstrServiceName);
999
1000
1001 //#ifdef WINDOWS
1002 // virtual DECLSPEC_NO_RETURN void raise_exception(::u32 dwExceptionCode, ::u32 dwExceptionFlags = EXCEPTION_NONCONTINUABLE);
1003 //#endif
1004
1005 virtual bool is_remote_session();
1006
1007
1008 virtual void set_file_status(const ::file::path& path, const ::file::file_status& status);
1009
1010
1011 //virtual void edit_link_target(const ::file::path & path, const ::file::path & pathLink);
1012 //virtual void edit_link_folder(const ::file::path & path, const ::file::path & pathLink);
1013 //virtual void edit_link_icon(const ::file::path& path, ::i32 iIcon, const ::file::path& pathLink);
1014 // virtual ::pointer < ::file::link > resolve_link(const ::file::path & path, ::file::e_link elink = ::file::e_link_all);
1015 virtual bool has_alias_in_path(const ::scoped_string& scopedstr, bool bNoUI = false, bool bNoMount = false);
1016
1017
1018 virtual bool is_alias(const ::file::path& path);
1019
1020
1021 virtual void initialize_wallpaper_fileset(::file::set* pfileset, bool bAddSearch);
1022
1023
1024 //virtual void set_dark_mode(bool bDarkMode);
1025
1026 virtual void file_open(const ::file::path& path, const ::scoped_string & scopedstrParams = "",
1027 const ::file::path& pathFolder = "");
1028
1029
1030 virtual void hidden_start(const ::file::path& path, const ::scoped_string & scopedstrParams = "",
1031 const ::file::path& pathFolder = "");
1032
1033
1034 virtual void hidden_run(const class time& timeWait, const ::file::path& path, const ::scoped_string & scopedstrParams = "",
1035 const ::file::path& pathFolder = "");
1036
1037
1038 virtual string get_default_browser();
1039
1040
1041 virtual void get_default_browser(string& strId, ::file::path& path, string& strParam);
1042
1043
1044 virtual void set_default_browser();
1045
1046
1047 virtual void set_file_extension_mime_type(::get_file_extension_mime_type* pgetfileextensionmimetype);
1048
1049
1050 virtual void set_file_extension_mime_type(string_array_base& straExtension, string_array_base& straMimeType);
1051
1052
1053 virtual void register_user_auto_start(::platform::application* papplication, const ::scoped_string & scopedstrArguments,
1054 bool bRegister);
1055
1056
1057 virtual bool is_user_auto_start(const ::scoped_string & scopedstrAppId);
1058
1059
1060 virtual ::file::path get_app_path(const ::scoped_string & scopedstrApp);
1061
1062
1063 virtual void on_process_request(::request* prequest);
1064
1065
1071 //virtual void browse_file_open(::property_set & set);
1072
1078 //virtual void browse_file_save(::property_set & set);
1079
1081 //virtual void browse_folder(::property_set & set);
1082
1084 //virtual void browse_file_or_folder(::property_set & set);
1085
1086
1087 virtual void list_process(::file::path_array_base& patha, ::process_identifier_array& uaPid);
1088
1089
1090 ::file::path_array_base list_process_path();
1091
1092
1093 //virtual ::icon_pointer load_icon(const ::payload & payloadFile);
1094
1095 //virtual void enum_draw2d_fonts(::write_text::font_enumeration_item_array& itema);
1096
1097 virtual void broadcast_environment_variable_change();
1098
1099
1100 virtual void set_this_application_as_default_for_file_extension(const ::scoped_string & scopedstrExtension);
1101
1102
1103 string get_file_extension_mime_type(const ::scoped_string & scopedstrExtension);
1104
1105
1106#ifdef LINUX
1107
1108 virtual enum_linux_distribution get_linux_distribution() const;
1109//#ifdef LINUX
1110
1111 // inline enum_linux_distribution get_linux_distribution() const;
1112
1113 virtual void calculate_linux_distribution();
1114
1115#endif
1116
1117#if !defined(WINDOWS)
1118 virtual string_array_base cmdline_from_pid(::process_identifier processidentifier);
1119 virtual atom_array app_get_pid(const ::scoped_string & scopedstrModuleName);
1120
1121#endif
1122
1123
1124#if defined(WINDOWS)
1125
1126 virtual error_code defer_co_initialize_ex(bool bMultiThread, bool bDisableOleDDE = false);
1127
1128#endif
1129
1130 //#ifdef WINDOWS_DESKTOP
1131 //
1132 //#endif
1133 //
1134 //
1135 //#endif
1136
1137
1138#ifdef WINDOWS_DESKTOP
1139
1140 virtual platform_char ** _get_envp(wcsdup_array& a);
1141
1142
1143 virtual void register_dll(const ::file::path& pathDll);
1144
1145
1146 virtual ::e_status _defer_beta_use_unicode_utf8();
1147
1148
1149 virtual ::e_status _defer_enable_coder_mode();
1150
1151
1152 virtual bool _has_beta_use_unicode_utf8();
1153
1154
1155 virtual bool _is_visual_studio_installed();
1156
1157
1158 virtual bool _is_tortoise_git_installed();
1159
1160
1161 virtual bool _is_msys2_installed();
1162
1163
1164 //virtual void _defer_install_msys2_package(const ::scoped_string & scopedstr);
1165
1166 //virtual bool _has_msys2_command(const ::scoped_string & scopedstr);
1167
1168 //virtual void _install_msys2_package(const ::scoped_string & scopedstr);
1169
1170 virtual bool _is_strawberry_perl_installed();
1171
1172
1173 virtual bool _is_coder_mode_enabled();
1174
1175
1176 virtual void _enable_coder_mode(bool bEnable = true);
1177
1178#endif
1179
1180 virtual bool _is_code_exe_user_path_environment_variable_ok(::string* pstrCorrectPath = nullptr,
1181 const_char_pointer pszPath = nullptr);
1182
1183#if defined(WINDOWS_DESKTOP) || defined(MACOS) || defined(LINUX)
1184
1185 virtual bool _is_smart_git_installed();
1186
1187#endif
1188
1189 virtual bool _is_google_drive_installed();
1190
1191
1192 //virtual bool _is_dropbox_installed();
1193
1194
1195 virtual bool _is_onedrive_installed();
1196
1197
1198 //virtual void calculate_dropbox_installed();
1199
1200
1201 virtual void calculate_onedrive_installed();
1202
1203
1204 virtual bool _is_google_chrome_installed();
1205
1206
1207 virtual bool _is_opera_browser_installed();
1208
1209
1210 virtual bool _is_visual_studio_code_installed();
1211
1212
1213 virtual bool _is_git_credential_manager_installed();
1214
1215
1216 virtual bool _is_jetbrains_clion_installed();
1217
1218
1219 virtual bool _is_shell_patched();
1220
1221#ifndef UNIVERSAL_WINDOWS
1222
1223 virtual ::array<::serial::port_info> list_serial_ports();
1224
1225#endif
1226
1227 //#if !defined(UNIVERSAL_WINDOWS)
1228 //
1229 //
1230 // //virtual string module_path_from_pid(::process_identifier processidentifier);
1231 // //virtual atom_array module_path_get_pid(const ::scoped_string & scopedstrModuleName, bool bModuleNameIsPropertyFormatted = true);
1232 //
1233 //
1234 //#ifndef WINDOWS
1235 //
1236 //
1237 //
1238 //#endif
1239 //
1240 //
1241 //#endif
1242 //
1243 //#ifndef UNIVERSAL_WINDOWS
1244 // //virtual bool process_contains_module(string & strImage, ::process_identifier processidentifier, const ::scoped_string & scopedstrLibrary);
1245 // //virtual void shared_library_process(dword_array & dwa, string_array_base & straProcesses, const ::scoped_string & scopedstrLibrary);
1246 //#endif
1247#if defined(__BSD__) || defined(__APPLE__)
1248
1249 virtual void arp_a(void *p, void(*callback)(void * p, ::u32 uIp, const_char_pointer status));
1250
1251#endif
1252
1253 virtual ::string eol();
1254
1255
1256 virtual ::i32 building_core_count(bool bDedicatedBuilding);
1257
1258
1259 virtual ::i32 performance_core_count();
1260
1261
1262 virtual ::i32 efficiency_core_count();
1263
1264
1265 virtual bool defer_component_factory(const ::scoped_string& scopedstrComponent);
1266
1267
1268 virtual void detached_command(const ::scoped_string& scopedstrCommand, const ::file::path& pathLog);
1269
1270
1271 // virtual void * fetch_windowing_system_display();
1272 // virtual void windowing_system_async(const ::procedure & procedure);
1273 // virtual void windowing_system_display_error_trap_push(::i32 i);
1274 // virtual void windowing_system_display_error_trap_pop_ignored(::i32 i);
1275
1276
1277 virtual bool _get_monitor_rectangle(::collection::index iMonitor, ::i32_rectangle& rectangle);
1278
1279
1280 virtual bool _get_workspace_rectangle(::collection::index iWorkspace, ::i32_rectangle& rectangle);
1281
1282
1283 virtual void realize(::particle_pointer pparticle);
1284
1285
1286 virtual ::string get_computer_name();
1287
1288
1289 virtual ::string system_name();
1290 virtual ::string system_release();
1291 virtual ::string system_architecture();
1292
1293
1294 virtual void protocol_set_data(const ::file::path & path, const ::block & block);
1295 virtual ::memory protocol_get_data(const ::file::path & path);
1296
1297
1298 virtual void on_protocol_set_data(const ::scoped_string & scopedstrProtocol, const ::scoped_string & scopedstrPath, const ::block & block);
1299 virtual ::memory on_protocol_get_data(const ::scoped_string & scopedstrProtocol, const ::scoped_string & scopedstrPath);
1300
1301
1302 virtual void post_media_store_operation(::data::block * pdatablock);
1303
1304 virtual void restart_application();
1305 };
1306
1307
1308} // namespace platform
Definition block.h:10
Definition error_code.h:22
Definition file_dialog.h:46
Definition folder_dialog.h:13
Definition listing.h:33
Definition path_array.h:19
Definition path.h:52
Definition types.h:47
Definition particle.h:95
Definition node_acme.h:122
virtual void node_main()
virtual void implement(::pointer<::platform::node>& pnode, ::pointer<::platform::system> & psystem);
Definition node_acme.cpp:96
virtual void list_process(::file::path_array_base &patha, ::process_identifier_array &uaPid)
set["folder"] : in/out folder path
Definition node_acme.cpp:1590
Definition property_set.h:512
Definition request.h:61
Definition security_attributes.h:7
Definition stack.h:7
Definition status.h:15
Definition string_map.h:10
Definition aaa_time.h:13
Definition topic.h:17
Definition strdup_array.h:9
include "thread/AutoLock.h"
Definition _forward_declaration.h:877
Definition block.h:46
Definition file_time.h:7
Definition os_theme_colors.h:11
Definition node_acme.h:26