Go to the documentation of this file. 1 #ifndef EAGINE_MAIN_CTX_HPP
9 #define EAGINE_MAIN_CTX_HPP
36 class data_compressor;
37 class process_watchdog;
65 EAGINE_ASSERT(_single_ptr());
66 return *_single_ptr();
114 return _scratch_space;
136 process_watchdog& _watchdog;
137 application_config& _app_config;
138 build_info& _bld_info;
139 system_info& _sys_info;
140 user_info& _usr_info;
141 memory::buffer& _scratch_space;
142 data_compressor& _compressor;
146 static auto _single_ptr() noexcept -> main_ctx*&;
149 #if !EAGINE_IMPLEMENTING_LIBRARY
150 extern auto main_impl(
int,
const char**,
const main_ctx_options&) -> int;
155 #if !EAGINE_LINK_LIBRARY || defined(EAGINE_IMPLEMENTING_LIBRARY)
156 #include <eagine/main_ctx.inl>
159 #endif // EAGINE_MAIN_CTX_HPP
Class for a single-instance object providing useful information ans services.
Definition: main_ctx.hpp:45
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
auto build() const noexcept -> const build_info &
Returns a reference to build information instance.
Definition: main_ctx.hpp:78
Common code is placed in this namespace.
Definition: eagine.hpp:21
auto system() noexcept -> system_info &
Returns a reference to system information object.
Definition: main_ctx.hpp:103
auto preinitialize() noexcept -> main_ctx &
Does potentially expensive initialization and caching.
Class for reading application configuration.
Definition: application_config.hpp:29
auto exe_path() const noexcept -> string_view
Returns the executable path.
Definition: main_ctx.hpp:123
auto config() noexcept -> application_config &
Returns a reference to application config object.
Definition: main_ctx.hpp:98
auto instance_id() const noexcept -> process_instance_id_t
Returns this process instance id. Not equal to system PID.
Definition: main_ctx.hpp:70
auto log() noexcept -> logger &
Returns a reference to the root logger object.
Definition: main_ctx.hpp:88
auto app_name() const noexcept -> string_view
Returns the application name.
Definition: main_ctx.hpp:128
std::uint32_t process_instance_id_t
Unique process identifier type (does not necessarily match to OS PID).
Definition: identifier_t.hpp:22
Class implementing process watchdog functionality.
Definition: watchdog.hpp:22
Structure holding root logger customization options.
Definition: root_logger_opts.hpp:16
auto args() noexcept -> program_args &
Returns a reference to program arguments wrapper.
Definition: main_ctx.hpp:83
Class wrapping the main function arguments, providing a convenient API.
Definition: program_args.hpp:1082
Class implementing data compression and decompresson.
Definition: compression.hpp:37
auto compressor() noexcept -> data_compressor &
Returns a reference to shared data compressor object.
Definition: main_ctx.hpp:118
auto watchdog() noexcept -> process_watchdog &
Returns a reference to process watchdog object.
Definition: main_ctx.hpp:93
Class providing basic system information.
Definition: build_info.hpp:20
Class providing user-related information.
Definition: user_info.hpp:22
auto operator=(main_ctx &&)=delete
Not move assignable.
Class providing basic system information.
Definition: system_info.hpp:32
static auto get() noexcept -> main_ctx &
Returns the single instance.
Definition: main_ctx.hpp:64
root_logger_options logger_opts
Options for the root logger.
Definition: main_ctx.hpp:33
auto user() noexcept -> user_info &
Returns a reference to user information object.
Definition: main_ctx.hpp:108
Standalone logger object type.
Definition: logger.hpp:427
std::string app_name
The application name. Defaults to the executable name.
Definition: main_ctx.hpp:27
auto scratch_space() noexcept -> memory::buffer &
Returns a reference to shared temporary buffer.
Definition: main_ctx.hpp:113
identifier app_id
The application root logger identifier.
Definition: main_ctx.hpp:30
Structure storing customization options for main context.
Definition: main_ctx.hpp:24