45 static auto run(
auto main_function) ->
int {
47 auto exit_code = internal_run(main_function);
50 }
catch (
const std::exception&
e) {
77 static auto run(
auto main_function,
int argc,
char* argv[]) ->
int {
79 return run(main_function);
86 return {args.begin() + 1, args.end()};
89 static auto argv_data() ->
char** {
return argv().data();}
91 static auto argv() -> xtd::array<char*>& {
92 if (!argv_.empty())
return argv_;
100 static auto internal_run(xtd::callable<
void,
int,
char* []>
auto main_function) ->
int {main_function(argv_length(), argv_data());
return xtd::environment::exit_code();}
101 static auto internal_run(xtd::callable<void, const xtd::argument_collection&>
auto main_function) ->
int {main_function(args());
return xtd::environment::exit_code();}
103 static auto internal_run(xtd::callable<int>
auto main_function) ->
int {
return main_function();}
104 static auto internal_run(xtd::callable<
int,
int,
char* []>
auto main_function) ->
int {
return main_function(argv_length(), argv_data());}
105 static auto internal_run(xtd::callable<int, const xtd::argument_collection&>
auto main_function) ->
int {
return main_function(args());}
107 static auto internal_run(xtd::callable<xtd::threading::tasks::task<>>
auto main_function) ->
int {main_function().wait();
return xtd::environment::exit_code();}
108 static auto internal_run(xtd::callable<xtd::threading::tasks::task<>,
int,
char* []>
auto main_function) ->
int {main_function(argv_length(), argv_data()).wait();
return xtd::environment::exit_code();}
111 static auto internal_run(xtd::callable<xtd::threading::tasks::task<int>>
auto main_function) ->
int {
return main_function().result();}
112 static auto internal_run(xtd::callable<xtd::threading::tasks::task<int>,
int,
char* []>
auto main_function) ->
int {
return main_function(argv_length(), argv_data()).result();}
113 static auto internal_run(xtd::callable<xtd::threading::tasks::task<int>,
const xtd::argument_collection&>
auto main_function) ->
int {
return main_function(args()).result();}
115 static auto internal_run(xtd::callable<xtd::threading::tasks::wtask<>>
auto main_function) ->
int {main_function().wait();
return xtd::environment::exit_code();}
116 static auto internal_run(xtd::callable<xtd::threading::tasks::wtask<>,
int,
char* []>
auto main_function) ->
int {main_function(argv_length(), argv_data()).wait();
return xtd::environment::exit_code();}
119 static auto internal_run(xtd::callable<xtd::threading::tasks::wtask<int>>
auto main_function) ->
int {
return main_function().result();}
120 static auto internal_run(xtd::callable<xtd::threading::tasks::wtask<int>,
int,
char* []>
auto main_function) ->
int {
return main_function(argv_length(), argv_data()).result();}
121 static auto internal_run(xtd::callable<xtd::threading::tasks::wtask<int>,
const xtd::argument_collection&>
auto main_function) ->
int {
return main_function(args()).result();}
123 inline static xtd::array<char*> argv_;
152#define startup_(...) \
153 auto main() -> int { \
154 return xtd::startup::run(__VA_ARGS__); \
156 auto __xtd_opaque_ftews__ = 0
Contains xtd::argument_collection alias.
Contains xtd::callable concept.
static auto get_command_line_args() -> const xtd::argument_collection &
Returns a string array containing the command-line arguments for the current process.
static auto set_command_line_args(const xtd::argument_collection &args) -> void
Sets the command-line arguments for the current process.
static auto exit_code() noexcept -> xtd::int32
Gets the exit code of the process.
static auto show_exception() -> xtd::int32
Shows unspecified exception with xtd::forms::exception_dialog or xtd::console.
Definition exception.hpp:149
Defines the xtd::startup object that can be used in the main method to safely call the application's ...
Definition startup.hpp:22
static auto run(auto main_function) -> int
Safely call the specified application's main entry point.
Definition startup.hpp:45
static auto run(auto main_function, int argc, char *argv[]) -> int
Safely call the specified application's main entry point, argc and argv.
Definition startup.hpp:77
static auto join_all() -> void
Blocks the calling thread until all joinable threads terminate.
Contains xtd::delegate <result_t(arguments_t...)> delegate.
Contains xtd::environment class.
Contains xtd::exception exception.
#define static_
This keyword is use to represent a static object. A static object can't be instantiated (constructors...
Definition static.hpp:38
auto as(any_object &o) -> type_t
Casts a type into another type.
Definition __as_any_object.hpp:60
xtd::array< xtd::string > argument_collection
Represents the collection of arguments passed to the main entry point method.
Definition argument_collection.hpp:19
@ e
The E key.
Definition console_key.hpp:96
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
constexpr auto data() const noexcept -> const_pointer
Gets direct access to the underlying contiguous storage.
Definition read_only_span.hpp:196
constexpr auto length() const noexcept -> size_type
Returns the length of the current read_only_span.
Definition read_only_span.hpp:212
Contains xtd::static_object class.
Contains xtd::threading::tasks::task <> class.
Contains xtd::threading::tasks::task <result_t> class.