CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::Engine::Service< T > Struct Template Reference

A wrapper class that stores and manages an engine Service. More...

#include <CeresEngine/Engine.hpp>

Public Member Functions

 Service () noexcept=default
 Creates a new Service wrapper.
 
 Service (const Service &) noexcept=delete
 
Serviceoperator= (const Service &) noexcept=delete
 
 Service (Service &&) noexcept=delete
 
Serviceoperator= (Service &&) noexcept=delete
 
 ~Service () noexcept
 
bool has () const noexcept
 
Tget () const noexcept
 
TgetPointer () const noexcept
 
template<typename TT = T, typename... Args>
TTcreate (Args &&... args)
 Creates a new service.
 
void destroy () noexcept
 Destroys a service.
 
void assign (UPtr< T > &&service) noexcept
 Assigns a new service.
 
template<typename TT >
bool is () const noexcept
 
 operator bool () const noexcept
 
 operator T& () const
 
 operator T* () const
 
Toperator* () const
 
Toperator-> () const
 
Serviceoperator= (UPtr< T > &&service) noexcept
 Assigns a new service.
 

Private Attributes

UPtr< TmService = nullptr
 A pointer to the service instance.
 

Detailed Description

template<typename T>
struct CeresEngine::Engine::Service< T >

A wrapper class that stores and manages an engine Service.

Template Parameters
Tthe service interface type

Constructor & Destructor Documentation

◆ Service() [1/3]

template<typename T >
CeresEngine::Engine::Service< T >::Service ( )
explicitdefaultnoexcept

Creates a new Service wrapper.

◆ Service() [2/3]

template<typename T >
CeresEngine::Engine::Service< T >::Service ( const Service< T > &  )
deletenoexcept

◆ Service() [3/3]

template<typename T >
CeresEngine::Engine::Service< T >::Service ( Service< T > &&  )
deletenoexcept

◆ ~Service()

template<typename T >
CeresEngine::Engine::Service< T >::~Service ( )
inlinenoexcept

Member Function Documentation

◆ assign()

template<typename T >
void CeresEngine::Engine::Service< T >::assign ( UPtr< T > &&  service)
inlinenoexcept

Assigns a new service.

Parameters
serviceThe service to be assigned

◆ create()

template<typename T >
template<typename TT = T, typename... Args>
TT & CeresEngine::Engine::Service< T >::create ( Args &&...  args)
inline

Creates a new service.

The service is created as an instance of TT. If a service is already present it is replaced.

Template Parameters
TTthe service implementation type
Argsthe service constructor argument types
Parameters
argsThe service constructor arguments
Returns
A reference to the newly created service instance

◆ destroy()

template<typename T >
void CeresEngine::Engine::Service< T >::destroy ( )
inlinenoexcept

Destroys a service.

If the service is not present, this method is a no-op.

◆ get()

template<typename T >
T & CeresEngine::Engine::Service< T >::get ( ) const
inlinenoexcept
Returns
A reference to the service

◆ getPointer()

template<typename T >
T * CeresEngine::Engine::Service< T >::getPointer ( ) const
inlinenoexcept
Returns
A pointer to the service

◆ has()

template<typename T >
bool CeresEngine::Engine::Service< T >::has ( ) const
inlinenoexcept
Returns
true if the service is available

◆ is()

template<typename T >
template<typename TT >
bool CeresEngine::Engine::Service< T >::is ( ) const
inlinenoexcept
Template Parameters
TTthe service type to check for
Returns
true if the service is of type TT.

◆ operator bool()

template<typename T >
CeresEngine::Engine::Service< T >::operator bool ( ) const
inlineexplicitnoexcept
Returns
true if the service is available

◆ operator T&()

template<typename T >
CeresEngine::Engine::Service< T >::operator T& ( ) const
inline

Returns
A reference to the service

◆ operator T*()

template<typename T >
CeresEngine::Engine::Service< T >::operator T* ( ) const
inline

Returns
A pointer to the service

◆ operator*()

template<typename T >
T & CeresEngine::Engine::Service< T >::operator* ( ) const
inline

Returns
A reference to the service

◆ operator->()

template<typename T >
T * CeresEngine::Engine::Service< T >::operator-> ( ) const
inline

Returns
A pointer to the service

◆ operator=() [1/3]

template<typename T >
Service & CeresEngine::Engine::Service< T >::operator= ( const Service< T > &  )
deletenoexcept

◆ operator=() [2/3]

template<typename T >
Service & CeresEngine::Engine::Service< T >::operator= ( Service< T > &&  )
deletenoexcept

◆ operator=() [3/3]

template<typename T >
Service & CeresEngine::Engine::Service< T >::operator= ( UPtr< T > &&  service)
inlinenoexcept

Assigns a new service.

Parameters
serviceThe service to be assigned
Returns
This

Member Data Documentation

◆ mService

template<typename T >
UPtr<T> CeresEngine::Engine::Service< T >::mService = nullptr
private

A pointer to the service instance.


The documentation for this struct was generated from the following file: