EnTT: entt::process< Derived, Delta > Class Template Reference

EnTT 3.15.0

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | List of all members
entt::process< Derived, Delta > Class Template Reference

Base class for processes. More...

`#include <process.hpp>`

## Public Types
using | delta_type = Delta
| Type used to provide elapsed time.

## Public Member Functions
constexpr | process ()=default
| Default constructor.
| process (const process &)=default
| Default copy constructor.
| process (process &&) noexcept=default
| Default move constructor.
process & | operator= (const process &)=default
| Default copy assignment operator.
process & | operator= (process &&) noexcept=default
| Default move assignment operator.
virtual | ~process ()
| Default destructor.
void | abort (const bool immediate=false)
| Aborts a process if it's still alive.
bool | alive () const noexcept
| Returns true if a process is either running or paused.
bool | finished () const noexcept
| Returns true if a process is already terminated.
bool | paused () const noexcept
| Returns true if a process is currently paused.
bool | rejected () const noexcept
| Returns true if a process terminated with errors.
void | tick (const Delta delta, void *data=nullptr)
| Updates a process and its internal state if required.

## Protected Member Functions
void | succeed () noexcept
| Terminates a process with success if it's still alive.
void | fail () noexcept
| Terminates a process with errors if it's still alive.
void | pause () noexcept
| Stops a process if it's in a running state.
void | unpause () noexcept
| Restarts a process if it's paused.

## Detailed Description

template<typename Derived, typename Delta>
class entt::process< Derived, Delta >

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:

- void update(Delta, void *);

  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.

- void init();

  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.

- void succeeded();

  It's invoked in case of success, immediately after an update and during the same tick.

- void failed();

  It's invoked in case of errors, immediately after an update and during the same tick.

- void aborted();

  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.

See also
  scheduler

Template Parameters

  Derived | Actual type of process that extends the class template.
  Delta | Type to use to provide elapsed time.

Definition at line 71 of file process.hpp.

## Member Typedef Documentation

## ◆ delta_type

template<typename Derived, typename Delta>

using entt::process< Derived, Delta >::delta_type = Delta

Type used to provide elapsed time.

Definition at line 167 of file process.hpp.

## Constructor & Destructor Documentation

## ◆ ~process()

template<typename Derived, typename Delta>

virtual entt::process< Derived, Delta >::~process | ( |  | ) |
| inlinevirtual

Default destructor.

Definition at line 191 of file process.hpp.

## Member Function Documentation

## ◆ abort()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::abort | ( | const bool | immediate = false | ) |
| inline

Aborts a process if it's still alive.

The function is idempotent and it does nothing if the process isn't alive.

Parameters

  immediate | Requests an immediate operation.

Definition at line 203 of file process.hpp.

## ◆ alive()

template<typename Derived, typename Delta>

bool entt::process< Derived, Delta >::alive | ( |  | ) | const
| inlinenodiscardnoexcept

Returns true if a process is either running or paused.

Returns
  True if the process is still alive, false otherwise.

Definition at line 217 of file process.hpp.

## ◆ fail()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::fail | ( |  | ) |
| inlineprotectednoexcept

Terminates a process with errors if it's still alive.

The function is idempotent and it does nothing if the process isn't alive.

Definition at line 135 of file process.hpp.

## ◆ finished()

template<typename Derived, typename Delta>

bool entt::process< Derived, Delta >::finished | ( |  | ) | const
| inlinenodiscardnoexcept

Returns true if a process is already terminated.

Returns
  True if the process is terminated, false otherwise.

Definition at line 225 of file process.hpp.

## ◆ operator=() [1/2]

template<typename Derived, typename Delta>

process & entt::process< Derived, Delta >::operator= | ( | const process< Derived, Delta > & |  | ) |
| default

Default copy assignment operator.

Returns
  This process.

## ◆ operator=() [2/2]

template<typename Derived, typename Delta>

process & entt::process< Derived, Delta >::operator= | ( | process< Derived, Delta > && |  | ) |
| defaultnoexcept

Default move assignment operator.

Returns
  This process.

## ◆ pause()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::pause | ( |  | ) |
| inlineprotectednoexcept

Stops a process if it's in a running state.

The function is idempotent and it does nothing if the process isn't running.

Definition at line 147 of file process.hpp.

## ◆ paused()

template<typename Derived, typename Delta>

bool entt::process< Derived, Delta >::paused | ( |  | ) | const
| inlinenodiscardnoexcept

Returns true if a process is currently paused.

Returns
  True if the process is paused, false otherwise.

Definition at line 233 of file process.hpp.

## ◆ rejected()

template<typename Derived, typename Delta>

bool entt::process< Derived, Delta >::rejected | ( |  | ) | const
| inlinenodiscardnoexcept

Returns true if a process terminated with errors.

Returns
  True if the process terminated with errors, false otherwise.

Definition at line 241 of file process.hpp.

## ◆ succeed()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::succeed | ( |  | ) |
| inlineprotectednoexcept

Terminates a process with success if it's still alive.

The function is idempotent and it does nothing if the process isn't alive.

Definition at line 123 of file process.hpp.

## ◆ tick()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::tick | ( | const Delta | delta,
|  | void * | data = nullptr )
| inline

Updates a process and its internal state if required.

Parameters

  delta | Elapsed time.
  data | Optional data.

Definition at line 250 of file process.hpp.

## ◆ unpause()

template<typename Derived, typename Delta>

void entt::process< Derived, Delta >::unpause | ( |  | ) |
| inlineprotectednoexcept

Restarts a process if it's paused.

The function is idempotent and it does nothing if the process isn't paused.

Definition at line 159 of file process.hpp.

The documentation for this class was generated from the following files:

- src/entt/process/fwd.hpp
- src/entt/process/process.hpp