Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance > Struct Template Reference

#include <type_erasure.h>

Inheritance diagram for tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >:
Inheritance graph
[legend]
Collaboration diagram for tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >:
Collaboration graph
[legend]

Public Types

using ConceptInterfaceType = ConceptInterface
 

Public Member Functions

template<typename T , generic_ctor_enabler< T > = 0>
 TypeErasureBase (T &&value)
 
 TypeErasureBase ()
 
 ~TypeErasureBase ()=default
 
 TypeErasureBase (const TypeErasureBase &other)
 
 TypeErasureBase (TypeErasureBase &&other) noexcept
 
TypeErasureBaseoperator= (TypeErasureBase &&other) noexcept
 
TypeErasureBaseoperator= (const TypeErasureBase &other)
 
template<typename T , generic_ctor_enabler< T > = 0>
TypeErasureBaseoperator= (T &&other)
 
std::type_index getType () const
 
bool isNull () const
 
bool operator== (const TypeErasureBase &rhs) const
 
bool operator!= (const TypeErasureBase &rhs) const
 
ConceptInterfaceTypegetInterface ()
 
const ConceptInterfaceTypegetInterface () const
 
template<typename T >
Tas ()
 
template<typename T >
const Tas () const
 

Private Types

template<typename T >
using uncvref_t = std::remove_cv_t< typename std::remove_reference< T >::type >
 
template<typename T >
using generic_ctor_enabler = std::enable_if_t<!std::is_base_of< TypeErasureBase, uncvref_t< T > >::value, int >
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int)
 

Private Attributes

std::unique_ptr< TypeErasureInterfacevalue_ { nullptr }
 

Friends

class boost::serialization::access
 
struct tesseract_common::Serialization
 

Member Typedef Documentation

◆ ConceptInterfaceType

template<typename ConceptInterface , template< typename > class ConceptInstance>
using tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::ConceptInterfaceType = ConceptInterface

◆ generic_ctor_enabler

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T >
using tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::generic_ctor_enabler = std::enable_if_t<!std::is_base_of<TypeErasureBase, uncvref_t<T> >::value, int>
private

◆ uncvref_t

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T >
using tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::uncvref_t = std::remove_cv_t<typename std::remove_reference<T>::type>
private

Constructor & Destructor Documentation

◆ TypeErasureBase() [1/4]

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T , generic_ctor_enabler< T > = 0>
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::TypeErasureBase ( T &&  value)
inline

◆ TypeErasureBase() [2/4]

template<typename ConceptInterface , template< typename > class ConceptInstance>
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::TypeErasureBase ( )
inline

◆ ~TypeErasureBase()

template<typename ConceptInterface , template< typename > class ConceptInstance>
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::~TypeErasureBase ( )
default

◆ TypeErasureBase() [3/4]

template<typename ConceptInterface , template< typename > class ConceptInstance>
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::TypeErasureBase ( const TypeErasureBase< ConceptInterface, ConceptInstance > &  other)
inline

◆ TypeErasureBase() [4/4]

template<typename ConceptInterface , template< typename > class ConceptInstance>
tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::TypeErasureBase ( TypeErasureBase< ConceptInterface, ConceptInstance > &&  other)
inlinenoexcept

Member Function Documentation

◆ as() [1/2]

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T >
T & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::as ( )
inline

◆ as() [2/2]

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T >
const T & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::as ( ) const
inline

◆ getInterface() [1/2]

template<typename ConceptInterface , template< typename > class ConceptInstance>
ConceptInterfaceType & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::getInterface ( )
inline

◆ getInterface() [2/2]

template<typename ConceptInterface , template< typename > class ConceptInstance>
const ConceptInterfaceType & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::getInterface ( ) const
inline

◆ getType()

template<typename ConceptInterface , template< typename > class ConceptInstance>
std::type_index tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::getType ( ) const
inline

◆ isNull()

template<typename ConceptInterface , template< typename > class ConceptInstance>
bool tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::isNull ( ) const
inline

◆ operator!=()

template<typename ConceptInterface , template< typename > class ConceptInstance>
bool tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::operator!= ( const TypeErasureBase< ConceptInterface, ConceptInstance > &  rhs) const
inline

◆ operator=() [1/3]

template<typename ConceptInterface , template< typename > class ConceptInstance>
TypeErasureBase & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::operator= ( const TypeErasureBase< ConceptInterface, ConceptInstance > &  other)
inline

◆ operator=() [2/3]

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<typename T , generic_ctor_enabler< T > = 0>
TypeErasureBase & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::operator= ( T &&  other)
inline

◆ operator=() [3/3]

template<typename ConceptInterface , template< typename > class ConceptInstance>
TypeErasureBase & tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::operator= ( TypeErasureBase< ConceptInterface, ConceptInstance > &&  other)
inlinenoexcept

◆ operator==()

template<typename ConceptInterface , template< typename > class ConceptInstance>
bool tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::operator== ( const TypeErasureBase< ConceptInterface, ConceptInstance > &  rhs) const
inline

◆ serialize()

template<typename ConceptInterface , template< typename > class ConceptInstance>
template<class Archive >
void tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::serialize ( Archive &  ar,
const unsigned int   
)
inlineprivate

Friends And Related Function Documentation

◆ boost::serialization::access

template<typename ConceptInterface , template< typename > class ConceptInstance>
friend class boost::serialization::access
friend

◆ tesseract_common::Serialization

template<typename ConceptInterface , template< typename > class ConceptInstance>
friend struct tesseract_common::Serialization
friend

Member Data Documentation

◆ value_

template<typename ConceptInterface , template< typename > class ConceptInstance>
std::unique_ptr<TypeErasureInterface> tesseract_common::TypeErasureBase< ConceptInterface, ConceptInstance >::value_ { nullptr }
private

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