Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable > Singleton Reference

Abstraction of a related pair of values, that extends the std::pair class. More...

#include <structured_pair.hpp>

Inheritance diagram for boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >:
Collaboration diagram for boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >:

Public Types

typedef
::boost::bimaps::relation::detail::relation_storage
< TA, TB, force_mutable > 
storage_base
 
typedef mutant_relation< TA,
TB, Info, false > 
above_view
 Above view, non mutable view of the relation. More...
 
typedef ::boost::mpl::vector4
< left_pair, right_pair,
mutant_relation< TA, TB, Info,
true >, mutant_relation< TA,
TB, Info, false > > 
mutant_views
 
typedef BOOST_DEDUCED_TYPENAME
tagged_info_type::value_type 
info_type
 
typedef BOOST_DEDUCED_TYPENAME
tagged_info_type::tag 
info_tag
 
typedef relation_storage< TA,
TB, false > 
non_mutable_storage
 
typedef BOOST_DEDUCED_TYPENAME
tags::support::default_tagged
< TA, member_at::left >::type 
tagged_left_type
 
typedef BOOST_DEDUCED_TYPENAME
tags::support::default_tagged
< TB, member_at::right >::type 
tagged_right_type
 
typedef structured_pair< TA,
TB, Info, normal_layout
left_pair
 A signature compatible std::pair that is a view of the relation. More...
 
typedef structured_pair< TB,
TA, Info, mirror_layout
right_pair
 A signature compatible std::pair that is a view of the relation. More...
 
typedef
BOOST_DEDUCED_TYPENAME::boost::mpl::if_c
< force_mutable,
BOOST_DEDUCED_TYPENAME::boost::remove_const
< BOOST_DEDUCED_TYPENAME
tagged_left_type::value_type >
::type, BOOST_DEDUCED_TYPENAME
tagged_left_type::value_type >
::type 
left_value_type
 The type stored in the relation. More...
 
typedef
BOOST_DEDUCED_TYPENAME::boost::mpl::if_c
< force_mutable,
BOOST_DEDUCED_TYPENAME::boost::remove_const
< BOOST_DEDUCED_TYPENAME
tagged_right_type::value_type >
::type, BOOST_DEDUCED_TYPENAME
tagged_right_type::value_type >
::type 
right_value_type
 The type stored in the relation. More...
 
typedef BOOST_DEDUCED_TYPENAME
tagged_left_type::tag 
left_tag
 The tag of the member. By default it is member_at::{side}. More...
 
typedef BOOST_DEDUCED_TYPENAME
tagged_right_type::tag 
right_tag
 The tag of the member. By default it is member_at::{side}. More...
 

Public Member Functions

 mutant_relation ()
 
 mutant_relation (BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::left_value_type >::param_type l, BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::right_value_type >::param_type r)
 
 mutant_relation (BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::left_value_type >::param_type l, BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::right_value_type >::param_type r, BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::info_type >::param_type i)
 
 mutant_relation (const mutant_relation< TA, TB, Info, false > &rel)
 
 mutant_relation (const mutant_relation< TA, TB, Info, true > &rel)
 
template<bool FM>
mutant_relationoperator= (const mutant_relation< TA, TB, Info, FM > &rel)
 
left_pairget_left_pair ()
 
const left_pairget_left_pair () const
 
right_pairget_right_pair ()
 
const right_pairget_right_pair () const
 
above_viewget_view ()
 
const above_viewget_view () const
 
template<class Tag >
const
BOOST_DEDUCED_TYPENAME::boost::bimaps::relation::support::result_of::get
< Tag, const mutant_relation >
::type 
get (BOOST_EXPLICIT_TEMPLATE_TYPE(Tag)) const
 
template<class Tag >
BOOST_DEDUCED_TYPENAME::boost::bimaps::relation::support::result_of::get
< Tag, mutant_relation >::type 
get (BOOST_EXPLICIT_TEMPLATE_TYPE(Tag))
 
BOOST_DEDUCED_TYPENAME
base_::left_value_type
get_left ()
 
const BOOST_DEDUCED_TYPENAME
base_::left_value_type
get_left () const
 
BOOST_DEDUCED_TYPENAME
base_::right_value_type
get_right ()
 
const BOOST_DEDUCED_TYPENAME
base_::right_value_type
get_right () const
 

Public Attributes

info_type info
 
BOOST_DEDUCED_TYPENAME
base_::left_value_type 
left
 data More...
 
BOOST_DEDUCED_TYPENAME
base_::right_value_type 
right
 data More...
 

Protected Member Functions

template<class Relation >
void change_to (const Relation &rel)
 

Friends

class ::boost::serialization::access
 

Detailed Description

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
singleton boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >

Abstraction of a related pair of values, that extends the std::pair class.

The mutant_relation is a mutant class. A mutant class can mutate with zero overhead in other classes that are called views. Each view has to be StorageCompatible with the base class of the mutant. Note that all the views have the following storage structure:

                        __________
                       |          |
                       |    TA    |
                       |__________|
                       |          |
                       |    TB    |
                       |__________|

See also select_relation, standard_relation.

Member Typedef Documentation

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
typedef mutant_relation<TA,TB,Info,false> boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::above_view

Above view, non mutable view of the relation.

template<class TA , class TB , class Info , bool force_mutable>
typedef BOOST_DEDUCED_TYPENAME tagged_info_type::tag boost::bimaps::relation::detail::relation_info_hook< TA, TB, Info, force_mutable >::info_tag
inherited
template<class TA , class TB , class Info , bool force_mutable>
typedef BOOST_DEDUCED_TYPENAME tagged_info_type::value_type boost::bimaps::relation::detail::relation_info_hook< TA, TB, Info, force_mutable >::info_type
inherited
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
typedef structured_pair< TA, TB, Info, normal_layout > boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::left_pair

A signature compatible std::pair that is a view of the relation.

template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME tagged_left_type ::tag boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::left_tag
inherited

The tag of the member. By default it is member_at::{side}.

template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c< force_mutable, BOOST_DEDUCED_TYPENAME ::boost::remove_const< BOOST_DEDUCED_TYPENAME tagged_left_type::value_type >::type, BOOST_DEDUCED_TYPENAME tagged_left_type::value_type >::type boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::left_value_type
inherited

The type stored in the relation.

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
typedef ::boost::mpl::vector4< left_pair, right_pair, mutant_relation< TA, TB, Info, true >, mutant_relation< TA, TB, Info, false > > boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_views
typedef relation_storage<TA ,TB ,false> boost::bimaps::relation::detail::relation_storage< TA , TB , force_mutable >::non_mutable_storage
inherited
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
typedef structured_pair< TB, TA, Info, mirror_layout > boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::right_pair

A signature compatible std::pair that is a view of the relation.

template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME tagged_right_type::tag boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::right_tag
inherited

The tag of the member. By default it is member_at::{side}.

template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME ::boost::mpl::if_c< force_mutable, BOOST_DEDUCED_TYPENAME ::boost::remove_const< BOOST_DEDUCED_TYPENAME tagged_right_type::value_type >::type, BOOST_DEDUCED_TYPENAME tagged_right_type::value_type >::type boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::right_value_type
inherited

The type stored in the relation.

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
typedef ::boost::bimaps::relation::detail:: relation_storage<TA,TB,force_mutable> boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::storage_base
template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME tags::support::default_tagged< TA, member_at::left >::type boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::tagged_left_type
inherited
template<class TA, class TB, bool force_mutable = false>
typedef BOOST_DEDUCED_TYPENAME tags::support::default_tagged< TB, member_at::right >::type boost::bimaps::relation::symmetrical_base< TA, TB, force_mutable >::tagged_right_type
inherited

Constructor & Destructor Documentation

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_relation ( )
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_relation ( BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::left_value_type >::param_type  l,
BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::right_value_type >::param_type  r 
)
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_relation ( BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::left_value_type >::param_type  l,
BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::right_value_type >::param_type  r,
BOOST_DEDUCED_TYPENAME::boost::call_traits< BOOST_DEDUCED_TYPENAME base_::info_type >::param_type  i 
)
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_relation ( const mutant_relation< TA, TB, Info, false > &  rel)
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::mutant_relation ( const mutant_relation< TA, TB, Info, true > &  rel)
inline

Member Function Documentation

template<class TA , class TB , class Info , bool force_mutable>
template<class Relation >
void boost::bimaps::relation::detail::relation_info_hook< TA, TB, Info, force_mutable >::change_to ( const Relation &  rel)
inlineprotectedinherited
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
template<class Tag >
const BOOST_DEDUCED_TYPENAME ::boost::bimaps::relation::support:: result_of::get<Tag,const mutant_relation>::type boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get ( BOOST_EXPLICIT_TEMPLATE_TYPE(Tag)  ) const
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
template<class Tag >
BOOST_DEDUCED_TYPENAME ::boost::bimaps::relation::support:: result_of::get<Tag,mutant_relation>::type boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get ( BOOST_EXPLICIT_TEMPLATE_TYPE(Tag)  )
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
left_pair& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_left_pair ( )
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
const left_pair& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_left_pair ( ) const
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
right_pair& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_right_pair ( )
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
const right_pair& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_right_pair ( ) const
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
above_view& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_view ( )
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
const above_view& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::get_view ( ) const
inline
template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
template<bool FM>
mutant_relation& boost::bimaps::relation::mutant_relation< TA, TB, Info, force_mutable >::operator= ( const mutant_relation< TA, TB, Info, FM > &  rel)
inline

Friends And Related Function Documentation

template<class TA, class TB, class Info = ::boost::mpl::na, bool force_mutable = false>
friend class ::boost::serialization::access
friend

Member Data Documentation

template<class TA , class TB , class Info , bool force_mutable>
info_type boost::bimaps::relation::detail::relation_info_hook< TA, TB, Info, force_mutable >::info
inherited

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