RefleX
Build DDS Applications in Modern C++ without IDL
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
Public Types | Public Member Functions | List of all members
reflex::match::Union< TagType, Cases > Struct Template Reference

#include <disc_union.h>

Public Types

typedef void * Blank
 
typedef TagType tag_type
 
typedef std::tuple< Cases...> case_tuple_type
 
typedef boost::variant< Blank,
Cases...> 
variant_type
 
typedef std::tuple< typename
Cases::case_ptr_type...> 
caseptr_tuple_type
 

Public Member Functions

 Union ()
 
 Union (const Union &other)
 
Unionoperator= (const Union &rhs)
 
 Union (const variant_type &v)
 
Unionoperator= (const variant_type &lhs)
 
template<typename CaseType , int... Tags>
 Union (const Case< CaseType, Tags...> &c)
 
template<typename CaseType , int... Tags>
Unionoperator= (const Case< CaseType, Tags...> &rhs)
 
template<class Tag , class... C>
 Union (const Union< Tag, C...> &u)
 
template<typename Tag , class... C>
Unionoperator= (const Union< Tag, C...> &rhs)
 
variant_typeget_variant ()
 
const variant_typeget_variant () const
 
void set_active_index (int i)
 
void reset_caseptr_tuple ()
 
void set_caseptr_tuple_for_writing (const caseptr_tuple_type &caseptrs, int ai)
 
void set_caseptr_tuple_for_reading (const caseptr_tuple_type &caseptrs)
 
const caseptr_tuple_typeget_caseptr_tuple () const
 
caseptr_tuple_typeget_caseptr_tuple ()
 
void swap (Union &other)
 
int get_active_index () const
 
bool empty () const
 
const std::type_info & type () const
 
bool operator== (const Union &rhs) const
 
template<typename U >
bool operator== (const U &rhs) const
 
bool operator< (const Union &rhs) const
 
template<typename U >
bool operator< (const U &rhs) const
 

Member Typedef Documentation

template<class TagType, class... Cases>
typedef void* reflex::match::Union< TagType, Cases >::Blank
template<class TagType, class... Cases>
typedef std::tuple<Cases...> reflex::match::Union< TagType, Cases >::case_tuple_type
template<class TagType, class... Cases>
typedef std::tuple<typename Cases::case_ptr_type...> reflex::match::Union< TagType, Cases >::caseptr_tuple_type
template<class TagType, class... Cases>
typedef TagType reflex::match::Union< TagType, Cases >::tag_type
template<class TagType, class... Cases>
typedef boost::variant<Blank, Cases...> reflex::match::Union< TagType, Cases >::variant_type

Constructor & Destructor Documentation

template<class TagType, class... Cases>
reflex::match::Union< TagType, Cases >::Union ( )
inline
template<class TagType, class... Cases>
reflex::match::Union< TagType, Cases >::Union ( const Union< TagType, Cases > &  other)
inline
template<class TagType, class... Cases>
reflex::match::Union< TagType, Cases >::Union ( const variant_type v)
inline
template<class TagType, class... Cases>
template<typename CaseType , int... Tags>
reflex::match::Union< TagType, Cases >::Union ( const Case< CaseType, Tags...> &  c)
inline
template<class TagType, class... Cases>
template<class Tag , class... C>
reflex::match::Union< TagType, Cases >::Union ( const Union< Tag, C...> &  u)
inline

Member Function Documentation

template<class TagType, class... Cases>
bool reflex::match::Union< TagType, Cases >::empty ( ) const
inline
template<class TagType, class... Cases>
int reflex::match::Union< TagType, Cases >::get_active_index ( ) const
inline
template<class TagType, class... Cases>
const caseptr_tuple_type& reflex::match::Union< TagType, Cases >::get_caseptr_tuple ( ) const
inline
template<class TagType, class... Cases>
caseptr_tuple_type& reflex::match::Union< TagType, Cases >::get_caseptr_tuple ( )
inline
template<class TagType, class... Cases>
variant_type& reflex::match::Union< TagType, Cases >::get_variant ( )
inline
template<class TagType, class... Cases>
const variant_type& reflex::match::Union< TagType, Cases >::get_variant ( ) const
inline
template<class TagType, class... Cases>
bool reflex::match::Union< TagType, Cases >::operator< ( const Union< TagType, Cases > &  rhs) const
inline
template<class TagType, class... Cases>
template<typename U >
bool reflex::match::Union< TagType, Cases >::operator< ( const U &  rhs) const
inline
template<class TagType, class... Cases>
Union& reflex::match::Union< TagType, Cases >::operator= ( const Union< TagType, Cases > &  rhs)
inline
template<class TagType, class... Cases>
Union& reflex::match::Union< TagType, Cases >::operator= ( const variant_type lhs)
inline
template<class TagType, class... Cases>
template<typename CaseType , int... Tags>
Union& reflex::match::Union< TagType, Cases >::operator= ( const Case< CaseType, Tags...> &  rhs)
inline
template<class TagType, class... Cases>
template<typename Tag , class... C>
Union& reflex::match::Union< TagType, Cases >::operator= ( const Union< Tag, C...> &  rhs)
inline
template<class TagType, class... Cases>
bool reflex::match::Union< TagType, Cases >::operator== ( const Union< TagType, Cases > &  rhs) const
inline
template<class TagType, class... Cases>
template<typename U >
bool reflex::match::Union< TagType, Cases >::operator== ( const U &  rhs) const
inline
template<class TagType, class... Cases>
void reflex::match::Union< TagType, Cases >::reset_caseptr_tuple ( )
inline
template<class TagType, class... Cases>
void reflex::match::Union< TagType, Cases >::set_active_index ( int  i)
inline
template<class TagType, class... Cases>
void reflex::match::Union< TagType, Cases >::set_caseptr_tuple_for_reading ( const caseptr_tuple_type caseptrs)
inline
template<class TagType, class... Cases>
void reflex::match::Union< TagType, Cases >::set_caseptr_tuple_for_writing ( const caseptr_tuple_type caseptrs,
int  ai 
)
inline
template<class TagType, class... Cases>
void reflex::match::Union< TagType, Cases >::swap ( Union< TagType, Cases > &  other)
inline
template<class TagType, class... Cases>
const std::type_info& reflex::match::Union< TagType, Cases >::type ( ) const
inline

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