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
 
StateHandle & operator= (StateHandle &&)=default
 
StateHandle & operator= (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 StateSpace * getStateSpace () const
 Returns the state space that created this state. More...
 

Protected Attributes

const StateSpace * mSpace
 State space of the sate that is managed by this handler. More...
 
QualifiedState * mState
 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.