OpenLexocad
28.0
|
Base class for processes. More...
#include <entt.hpp>
Public Types | |
using | delta_type = Delta |
Type used to provide elapsed time. More... | |
Public Member Functions | |
virtual | ~process () ENTT_NOEXCEPT |
Default destructor. More... | |
void | abort (const bool immediately=false) ENTT_NOEXCEPT |
Aborts a process if it's still alive. More... | |
bool | alive () const ENTT_NOEXCEPT |
Returns true if a process is either running or paused. More... | |
bool | dead () const ENTT_NOEXCEPT |
Returns true if a process is already terminated. More... | |
bool | paused () const ENTT_NOEXCEPT |
Returns true if a process is currently paused. More... | |
bool | rejected () const ENTT_NOEXCEPT |
Returns true if a process terminated with errors. More... | |
void | tick (const Delta delta, void *data=nullptr) |
Updates a process and its internal state if required. More... | |
Protected Member Functions | |
void | succeed () ENTT_NOEXCEPT |
Terminates a process with success if it's still alive. More... | |
void | fail () ENTT_NOEXCEPT |
Terminates a process with errors if it's still alive. More... | |
void | pause () ENTT_NOEXCEPT |
Stops a process if it's in a running state. More... | |
void | unpause () ENTT_NOEXCEPT |
Restarts a process if it's paused. More... | |
Base class for processes.
This class stays true to the CRTP idiom. Derived classes must specify what's the intended type for elapsed times.
A process should expose publicly the following member functions whether required:
It's invoked once per tick until a process is explicitly aborted or it terminates either with or without errors. Even though it's not mandatory to declare this member function, as a rule of thumb each process should at least define it to work properly. The void *
parameter is an opaque pointer to user data (if any) forwarded directly to the process during an update.
It's invoked when the process joins the running queue of a scheduler. This happens as soon as it's attached to the scheduler if the process is a top level one, otherwise when it replaces its parent if the process is a continuation.
It's invoked in case of success, immediately after an update and during the same tick.
It's invoked in case of errors, immediately after an update and during the same tick.
It's invoked only if a process is explicitly aborted. There is no guarantee that it executes in the same tick, this depends solely on whether the process is aborted immediately or not.
Derived classes can change the internal state of a process by invoking the succeed
and fail
protected member functions and even pause or unpause the process itself.
Derived | Actual type of process that extends the class template. |
Delta | Type to use to provide elapsed time. |
using entt::process< Derived, Delta >::delta_type = Delta |
Type used to provide elapsed time.
|
inlinevirtual |
Default destructor.
|
inline |
Aborts a process if it's still alive.
The function is idempotent and it does nothing if the process isn't alive.
immediately | Requests an immediate operation. |
|
inline |
Returns true if a process is either running or paused.
|
inline |
Returns true if a process is already terminated.
|
inlineprotected |
Terminates a process with errors if it's still alive.
The function is idempotent and it does nothing if the process isn't alive.
|
inlineprotected |
Stops a process if it's in a running state.
The function is idempotent and it does nothing if the process isn't running.
|
inline |
Returns true if a process is currently paused.
|
inline |
Returns true if a process terminated with errors.
|
inlineprotected |
Terminates a process with success if it's still alive.
The function is idempotent and it does nothing if the process isn't alive.
|
inline |
Updates a process and its internal state if required.
delta | Elapsed time. |
data | Optional data. |
|
inlineprotected |
Restarts a process if it's paused.
The function is idempotent and it does nothing if the process isn't paused.