Aikido
aikido::statespace::StateHandle< _StateSpace, _QualifiedState > Class Template Reference

Wrap a State with its StateSpace to provide convenient accessor methods. More...

#include <aikido/statespace/StateHandle.hpp>

Inheritance diagram for aikido::statespace::StateHandle< _StateSpace, _QualifiedState >:
aikido::statespace::ScopedState< StateHandle >

Public Types

using StateSpace = _StateSpace
 
using QualifiedState = _QualifiedState
 
using State = typename StateSpace::State
 
using ConstState = typename std::conditional< std::is_const< QualifiedState >::value, QualifiedState, const QualifiedState >::type
 

Public Member Functions

 StateHandle ()
 Constructs a nullptr handle. More...
 
 StateHandle (const StateSpace *space, QualifiedState *state)
 Wrap state, which must be form the provided StateSpace. More...
 
 StateHandle (const StateHandle &)=default
 
 StateHandle (StateHandle &&)=default
 
StateHandleoperator= (StateHandle &&)=default
 
StateHandleoperator= (const StateHandle &)=default
 
 operator QualifiedState * () const
 Implicitly convert to a State pointer. More...
 
void reset ()
 Resets StateHandle to nullptr. More...
 
void reset (const StateSpace *space, QualifiedState *state)
 Resets the state, which must be from the provided StateSpace. More...
 
template<typename Q = QualifiedState>
auto getState () -> typename std::enable_if<!std::is_const< Q >::value, Q * >::type
 Returns the State. More...
 
template<typename Q = QualifiedState>
auto getState () const -> typename std::conditional< std::is_const< Q >::value, Q *, const Q * >::type
 Returns the State. More...
 
const StateSpacegetStateSpace () const
 Returns the state space that created this state. More...
 

Protected Attributes

const StateSpacemSpace
 State space of the sate that is managed by this handler. More...
 
QualifiedStatemState
 State managed by this handler. This can be either const or non-const type. More...
 

Detailed Description

template<class _StateSpace, class _QualifiedState>
class aikido::statespace::StateHandle< _StateSpace, _QualifiedState >

Wrap a State with its StateSpace to provide convenient accessor methods.

The template parameter _QualifiedState is necessary to support both const and non-const states.

Template Parameters
_StateSpaceType of StateSpace this state is a member of
_QualifiedStateType of State being wrapped

Member Typedef Documentation

◆ ConstState

template<class _StateSpace , class _QualifiedState >
using aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::ConstState = typename std::conditional< std::is_const<QualifiedState>::value, QualifiedState, const QualifiedState>::type

◆ QualifiedState

template<class _StateSpace , class _QualifiedState >
using aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::QualifiedState = _QualifiedState

◆ State

template<class _StateSpace , class _QualifiedState >
using aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::State = typename StateSpace::State

◆ StateSpace

template<class _StateSpace , class _QualifiedState >
using aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::StateSpace = _StateSpace

Constructor & Destructor Documentation

◆ StateHandle() [1/4]

template<class StateSpace , class QualifiedState >
aikido::statespace::StateHandle< StateSpace, QualifiedState >::StateHandle

Constructs a nullptr handle.

◆ StateHandle() [2/4]

template<class StateSpace , class QualifiedState >
aikido::statespace::StateHandle< StateSpace, QualifiedState >::StateHandle ( const StateSpace space,
QualifiedState state 
)

Wrap state, which must be form the provided StateSpace.

Parameters
spaceState space that created state.
stateState created by space.

◆ StateHandle() [3/4]

template<class _StateSpace , class _QualifiedState >
aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::StateHandle ( const StateHandle< _StateSpace, _QualifiedState > &  )
default

◆ StateHandle() [4/4]

template<class _StateSpace , class _QualifiedState >
aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::StateHandle ( StateHandle< _StateSpace, _QualifiedState > &&  )
default

Member Function Documentation

◆ getState() [1/2]

template<class StateSpace , class QualifiedState >
template<typename Q >
auto aikido::statespace::StateHandle< StateSpace, QualifiedState >::getState

Returns the State.

This function is enabled only if QualifiedState is a non-const State type.

Returns
state wrapped by this handle

◆ getState() [2/2]

template<class _StateSpace , class _QualifiedState >
template<typename Q = QualifiedState>
auto aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::getState ( ) const -> typename std::conditional< std::is_const< Q >::value, Q *, const Q * >::type

Returns the State.

Returns
State wrapped by this handle

◆ getStateSpace()

template<class _StateSpace , class _QualifiedState >
auto aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::getStateSpace

Returns the state space that created this state.

Returns
State space created this state

◆ operator QualifiedState *()

template<class StateSpace , class QualifiedState >
aikido::statespace::StateHandle< StateSpace, QualifiedState >::operator QualifiedState *

Implicitly convert to a State pointer.

◆ operator=() [1/2]

template<class _StateSpace , class _QualifiedState >
StateHandle& aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::operator= ( const StateHandle< _StateSpace, _QualifiedState > &  )
default

◆ operator=() [2/2]

template<class _StateSpace , class _QualifiedState >
StateHandle& aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::operator= ( StateHandle< _StateSpace, _QualifiedState > &&  )
default

◆ reset() [1/2]

template<class StateSpace , class QualifiedState >
void aikido::statespace::StateHandle< StateSpace, QualifiedState >::reset

Resets StateHandle to nullptr.

◆ reset() [2/2]

template<class StateSpace , class QualifiedState >
void aikido::statespace::StateHandle< StateSpace, QualifiedState >::reset ( const StateSpace space,
QualifiedState state 
)

Resets the state, which must be from the provided StateSpace.

Parameters
spaceState space that created state.
stateState created by space.

Member Data Documentation

◆ mSpace

template<class _StateSpace , class _QualifiedState >
const StateSpace* aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::mSpace
protected

State space of the sate that is managed by this handler.

◆ mState

template<class _StateSpace , class _QualifiedState >
QualifiedState* aikido::statespace::StateHandle< _StateSpace, _QualifiedState >::mState
protected

State managed by this handler. This can be either const or non-const type.