Bifrost SDK
Bifrost SDK documentation
Amino::TaskObserverT< T > Class Template Referencefinal

Typed-version of TaskObserver. More...

#include <TaskObserver.h>

Inheritance diagram for Amino::TaskObserverT< T >:
Amino::TaskObserver

Public Member Functions

template<typename... Args, typename = std::enable_if_t<std::is_constructible_v<T, Args...>>>
 TaskObserverT (Args &&... args)
 Constructs a TaskObserverT managing a concrete Amino::ITaskObserver of derived type T. More...
 
template<typename D , typename = enable_if_derived<D>>
 TaskObserverT (TaskObserverT< D > &&other) noexcept
 Upcast conversion constructor. More...
 
template<typename D , typename = enable_if_derived<D>>
TaskObserverToperator= (TaskObserverT< D > &&other) noexcept
 Upcast conversion assignment. More...
 
T const & operator* () const
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
T & operator* ()
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
T const * operator-> () const
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
T * operator-> ()
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
T const * get () const
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
T * get ()
 Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT. More...
 
- Public Member Functions inherited from Amino::TaskObserver
AMINO_CORE_SHARED_DECL TaskObserver () noexcept
 Default constructor (constructs a noop observer). More...
 
AMINO_CORE_SHARED_DECL TaskObserver (TaskObserver &&) noexcept
 Move constructor. More...
 
AMINO_CORE_SHARED_DECL TaskObserveroperator= (TaskObserver &&o) noexcept
 Move assignment operator. More...
 
AMINO_CORE_SHARED_DECL ~TaskObserver ()
 Destructor. More...
 
TaskNotifier getNotifier () const
 Create and return a notifier associated with this observer. More...
 
AMINO_CORE_SHARED_DECL bool isInUse () const
 Whether this TaskObserver has a TaskNotifier in use. More...
 
AMINO_CORE_SHARED_DECL void reset () noexcept
 Reset the observer to a noop observer. More...
 
 TaskObserver (TaskObserver const &)=delete
 TaskObserver is not copy-constructible. More...
 
TaskObserveroperator= (TaskObserver const &)=delete
 TaskObserver is not copy-assignable. More...
 
AMINO_CORE_SHARED_DECL bool isValid () const
 Whether this observer is valid (wraps a concrete non-null ITaskObserver). More...
 
 operator bool () const
 Whether this observer is valid (wraps a concrete non-null ITaskObserver). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Amino::TaskObserver
template<typename T , typename... Args>
static TaskObserverT< T > make (Args &&... args)
 Create a new concrete task observer of type T. More...
 

Detailed Description

template<typename T>
class Amino::TaskObserverT< T >

Typed-version of TaskObserver.

Allows dereferencing the observer to the concrete derived type. This can be useful to allow the concrete observer to be the owner of all the data it needs the observation callbacks are called.

A TaskObserverT can be safely type-erased to a TaskObserver; no slicing will occur.

Definition at line 244 of file TaskObserver.h.

Constructor & Destructor Documentation

◆ TaskObserverT() [1/2]

template<typename T >
template<typename... Args, typename = std::enable_if_t<std::is_constructible_v<T, Args...>>>
Amino::TaskObserverT< T >::TaskObserverT ( Args &&...  args)
inlineexplicit

Constructs a TaskObserverT managing a concrete Amino::ITaskObserver of derived type T.

Forwards the arguments to the constructor of T.

Definition at line 261 of file TaskObserver.h.

◆ TaskObserverT() [2/2]

template<typename T >
template<typename D , typename = enable_if_derived<D>>
Amino::TaskObserverT< T >::TaskObserverT ( TaskObserverT< D > &&  other)
inlinenoexcept

Upcast conversion constructor.

Definition at line 268 of file TaskObserver.h.

Member Function Documentation

◆ get() [1/2]

template<typename T >
T * Amino::TaskObserverT< T >::get ( )
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 288 of file TaskObserver.h.

◆ get() [2/2]

template<typename T >
T const * Amino::TaskObserverT< T >::get ( ) const
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 287 of file TaskObserver.h.

◆ operator*() [1/2]

template<typename T >
T & Amino::TaskObserverT< T >::operator* ( )
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 282 of file TaskObserver.h.

◆ operator*() [2/2]

template<typename T >
T const & Amino::TaskObserverT< T >::operator* ( ) const
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 281 of file TaskObserver.h.

◆ operator->() [1/2]

template<typename T >
T * Amino::TaskObserverT< T >::operator-> ( )
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 285 of file TaskObserver.h.

◆ operator->() [2/2]

template<typename T >
T const * Amino::TaskObserverT< T >::operator-> ( ) const
inline

Get the concrete derived Amino::ITaskObserver uniquely managed by this TaskObserverT.

Definition at line 284 of file TaskObserver.h.

◆ operator=()

template<typename T >
template<typename D , typename = enable_if_derived<D>>
TaskObserverT & Amino::TaskObserverT< T >::operator= ( TaskObserverT< D > &&  other)
inlinenoexcept

Upcast conversion assignment.

Definition at line 273 of file TaskObserver.h.

References Amino::TaskObserver::operator=().