Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
composite_key.hpp File Reference
#include <boost/config.hpp>
#include <boost/functional/hash_fwd.hpp>
#include <boost/multi_index/detail/access_specifier.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/or.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/control/expr_if.hpp>
#include <boost/preprocessor/list/at.hpp>
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/static_assert.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/utility/enable_if.hpp>
#include <functional>
#include <boost/ref.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/multi_index/detail/cons_stdtuple.hpp>
Include dependency graph for composite_key.hpp:
This graph shows which files directly or indirectly include this file:

Classes

singleton  boost::reference_wrapper< T >
 Contains a reference to an object of type T. More...
 
struct  boost::multi_index::detail::nth_key_from_value< CompositeKey, N >
 
struct  boost::multi_index::detail::generic_operator_equal
 
struct  boost::multi_index::detail::generic_operator_less
 
struct  boost::multi_index::detail::equal_ckey_ckey< KeyCons1, Value1, KeyCons2, Value2, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_ckey_terminal< KeyCons1, Value1, KeyCons2, Value2, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_ckey_normal< KeyCons1, Value1, KeyCons2, Value2, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_ckey< KeyCons1, Value1, KeyCons2, Value2, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_cval< KeyCons, Value, ValCons, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_cval_terminal< KeyCons, Value, ValCons, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_cval_normal< KeyCons, Value, ValCons, EqualCons >
 
struct  boost::multi_index::detail::equal_ckey_cval< KeyCons, Value, ValCons, EqualCons >
 
struct  boost::multi_index::detail::compare_ckey_ckey< KeyCons1, Value1, KeyCons2, Value2, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_ckey_terminal< KeyCons1, Value1, KeyCons2, Value2, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_ckey_normal< KeyCons1, Value1, KeyCons2, Value2, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_ckey< KeyCons1, Value1, KeyCons2, Value2, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_cval< KeyCons, Value, ValCons, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_cval_terminal< KeyCons, Value, ValCons, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_cval_normal< KeyCons, Value, ValCons, CompareCons >
 
struct  boost::multi_index::detail::compare_ckey_cval< KeyCons, Value, ValCons, CompareCons >
 
struct  boost::multi_index::detail::hash_ckey< KeyCons, Value, HashCons >
 
struct  boost::multi_index::detail::hash_ckey_terminal< KeyCons, Value, HashCons >
 
struct  boost::multi_index::detail::hash_ckey_normal< KeyCons, Value, HashCons >
 
struct  boost::multi_index::detail::hash_ckey< KeyCons, Value, HashCons >
 
struct  boost::multi_index::detail::hash_cval< ValCons, HashCons >
 
struct  boost::multi_index::detail::hash_cval_terminal< ValCons, HashCons >
 
struct  boost::multi_index::detail::hash_cval_normal< ValCons, HashCons >
 
struct  boost::multi_index::detail::hash_cval< ValCons, HashCons >
 
struct  boost::multi_index::composite_key_result< CompositeKey >
 
struct  boost::multi_index::composite_key< Value, >
 
struct  boost::multi_index::composite_key_equal_to<>
 
struct  boost::multi_index::composite_key_compare<>
 
struct  boost::multi_index::composite_key_hash<>
 
struct  boost::multi_index::composite_key_result_equal_to< CompositeKeyResult >
 
struct  boost::multi_index::composite_key_result_less< CompositeKeyResult >
 
struct  boost::multi_index::composite_key_result_greater< CompositeKeyResult >
 
struct  boost::multi_index::composite_key_result_hash< CompositeKeyResult >
 
struct  std::equal_to< boost::multi_index::composite_key_result< CompositeKey > >
 
struct  std::less< boost::multi_index::composite_key_result< CompositeKey > >
 
struct  std::greater< boost::multi_index::composite_key_result< CompositeKey > >
 
struct  boost::hash< boost::multi_index::composite_key_result< CompositeKey > >
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::multi_index
 
 boost::multi_index::detail
 

Macros

#define BOOST_MULTI_INDEX_LIMIT_COMPOSITE_KEY_SIZE   10
 
#define BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE   10
 
#define BOOST_MULTI_INDEX_CK_ENUM(macro, data)   BOOST_PP_ENUM(BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE,macro,data)
 
#define BOOST_MULTI_INDEX_CK_ENUM_PARAMS(param)   BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE,param)
 
#define BOOST_MULTI_INDEX_CK_TEMPLATE_PARM(z, n, text)   typename BOOST_PP_CAT(text,n) BOOST_PP_EXPR_IF(n,=tuples::null_type)
 
#define BOOST_MULTI_INDEX_CK_CTOR_ARG(z, n, text)   const BOOST_PP_CAT(text,n)& BOOST_PP_CAT(k,n) = BOOST_PP_CAT(text,n)()
 
#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N(z, n, list)
 
#define BOOST_MULTI_INDEX_CK_NTH_COMPOSITE_KEY_FUNCTOR(name, functor)
 
#define BOOST_MULTI_INDEX_CK_IDENTITY_ENUM_MACRO(z, n, text)   text
 
#define BOOST_MULTI_INDEX_CK_COMPLETE_COMP_OPS(t1, t2, a1, a2)
 
#define BOOST_MULTI_INDEX_CK_RESULT_EQUAL_TO_SUPER
 
#define BOOST_MULTI_INDEX_CK_RESULT_LESS_SUPER
 
#define BOOST_MULTI_INDEX_CK_RESULT_GREATER_SUPER
 
#define BOOST_MULTI_INDEX_CK_RESULT_HASH_SUPER
 

Typedefs

typedef tuple< BOOST_PP_ENUM(10,
BOOST_MULTI_INDEX_CK_IDENTITY_ENUM_MACRO,
detail::generic_operator_equal) > 
boost::multi_index::detail::generic_operator_equal_tuple
 
typedef tuple< BOOST_PP_ENUM(10,
BOOST_MULTI_INDEX_CK_IDENTITY_ENUM_MACRO,
detail::generic_operator_less) > 
boost::multi_index::detail::generic_operator_less_tuple
 

Functions

template<typename KeyFromValue >
struct boost::multi_index::detail::BOOST_PP_CAT (key_, equal_to)
 
template<>
struct boost::multi_index::detail::BOOST_PP_CAT (key_, equal_to)< tuples
 
template<typename CompositeKey , int N>
struct boost::multi_index::detail::BOOST_PP_CAT (nth_composite_key_, equal_to)
 
template<typename KeyFromValue >
struct boost::multi_index::detail::BOOST_PP_CAT (key_, less)
 
template<>
struct boost::multi_index::detail::BOOST_PP_CAT (key_, less)< tuples
 
template<typename CompositeKey , int N>
struct boost::multi_index::detail::BOOST_PP_CAT (nth_composite_key_, less)
 
template<typename KeyFromValue >
struct boost::multi_index::detail::BOOST_PP_CAT (key_, greater)
 
template<>
struct boost::multi_index::detail::BOOST_PP_CAT (key_, greater)< tuples
 
template<typename CompositeKey , int N>
struct boost::multi_index::detail::BOOST_PP_CAT (nth_composite_key_, greater)
 
template<typename KeyFromValue >
struct boost::multi_index::detail::BOOST_PP_CAT (key_, hash)
 
template<>
struct boost::multi_index::detail::BOOST_PP_CAT (key_, hash)< tuples
 
template<typename CompositeKey , int N>
struct boost::multi_index::detail::BOOST_PP_CAT (nth_composite_key_, hash)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator== (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator== (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator== (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator== (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator== (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator< (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator< (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator< (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator< (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator< (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator!= (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator> (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator>= (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey1 , typename CompositeKey2 >
bool boost::multi_index::operator<= (const composite_key_result< CompositeKey1 > &x, const composite_key_result< CompositeKey2 > &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator!= (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator> (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator>= (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<typename CompositeKey , BOOST_PP_ENUM_PARAMS(10, typename Value) >
bool boost::multi_index::operator<= (const composite_key_result< CompositeKey > &x, const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator!= (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator> (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator>= (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<BOOST_PP_ENUM_PARAMS(10, typename Value) , typename CompositeKey >
bool boost::multi_index::operator<= (const tuple< BOOST_PP_ENUM_PARAMS(10, Value)> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator!= (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator> (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator>= (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator<= (const composite_key_result< CompositeKey > &x, const std::tuple< Values...> &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator!= (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator> (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator>= (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 
template<typename CompositeKey , typename... Values>
bool boost::multi_index::operator<= (const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
 

Macro Definition Documentation

#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N (   z,
  n,
  list 
)
Value:
#define BOOST_PP_LIST_AT(list, index)
Definition: at.hpp:26
#define n
Definition: register_functions_iterate.hpp:7
#define BOOST_DEDUCED_TYPENAME
Definition: suffix.hpp:465
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_MULTI_INDEX_CK_COMPLETE_COMP_OPS (   t1,
  t2,
  a1,
  a2 
)
Value:
template<t1,t2> inline bool operator!=(const a1& x,const a2& y) \
{ \
return !(x==y); \
} \
\
template<t1,t2> inline bool operator>(const a1& x,const a2& y) \
{ \
return y<x; \
} \
\
template<t1,t2> inline bool operator>=(const a1& x,const a2& y) \
{ \
return !(x<y); \
} \
\
template<t1,t2> inline bool operator<=(const a1& x,const a2& y) \
{ \
return !(y<x); \
}
enable_if< typename gtl_and< y_p_y, typename is_point_concept< typename geometry_concept< PointType >::type >::type >::type, typename point_coordinate_type< PointType >::type >::type y(const PointType &point)
Definition: point_concept.hpp:199
bool operator!=(const std::tuple< Values...> &x, const composite_key_result< CompositeKey > &y)
Definition: composite_key.hpp:931
Traits const flyweight< T, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5 > &x return out<< x.get();}template< BOOST_TEMPLATED_STREAM_COMMA typename T, typename Arg_1, typename Arg_2, typename Arg_3, typename Arg_4, typename Arg_5 > Traits flyweight< T, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5 > & x
Definition: flyweight.hpp:423
bool operator>(failed, failed)
proto::terminal< detail::attribute_placeholder< mpl::int_< 1 > > >::type const a1
Definition: regex_primitives.hpp:826
proto::terminal< detail::attribute_placeholder< mpl::int_< 2 > > >::type const a2
Definition: regex_primitives.hpp:827
bool operator>=(failed, failed)
bool operator<=(failed, failed)
#define BOOST_MULTI_INDEX_CK_CTOR_ARG (   z,
  n,
  text 
)    const BOOST_PP_CAT(text,n)& BOOST_PP_CAT(k,n) = BOOST_PP_CAT(text,n)()
#define BOOST_MULTI_INDEX_CK_ENUM (   macro,
  data 
)    BOOST_PP_ENUM(BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE,macro,data)
#define BOOST_MULTI_INDEX_CK_ENUM_PARAMS (   param)    BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE,param)
#define BOOST_MULTI_INDEX_CK_IDENTITY_ENUM_MACRO (   z,
  n,
  text 
)    text
#define BOOST_MULTI_INDEX_CK_NTH_COMPOSITE_KEY_FUNCTOR (   name,
  functor 
)
Value:
template<typename KeyFromValue> \
struct BOOST_PP_CAT(key_,name) \
{ \
typedef functor<typename KeyFromValue::result_type> type; \
}; \
\
template<> \
struct BOOST_PP_CAT(key_,name)<tuples::null_type> \
{ \
typedef tuples::null_type type; \
}; \
\
template<typename CompositeKey,int N> \
struct BOOST_PP_CAT(nth_composite_key_,name) \
{ \
typedef typename nth_key_from_value<CompositeKey,N>::type key_from_value; \
typedef typename BOOST_PP_CAT(key_,name)<key_from_value>::type type; \
};
const int name
Definition: gzip.hpp:94
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_MULTI_INDEX_CK_RESULT_EQUAL_TO_SUPER
Value:
composite_key_equal_to< \
/* the argument is a PP list */ \
(detail::nth_composite_key_equal_to, \
(BOOST_DEDUCED_TYPENAME CompositeKeyResult::composite_key_type, \
BOOST_PP_NIL))) \
>
#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N(z, n, list)
Definition: composite_key.hpp:101
#define BOOST_DEDUCED_TYPENAME
Definition: suffix.hpp:465
#define BOOST_MULTI_INDEX_CK_ENUM(macro, data)
Definition: composite_key.hpp:79
#define BOOST_MULTI_INDEX_CK_RESULT_GREATER_SUPER
Value:
composite_key_compare< \
/* the argument is a PP list */ \
(detail::nth_composite_key_greater, \
(BOOST_DEDUCED_TYPENAME CompositeKeyResult::composite_key_type, \
BOOST_PP_NIL))) \
>
#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N(z, n, list)
Definition: composite_key.hpp:101
#define BOOST_DEDUCED_TYPENAME
Definition: suffix.hpp:465
#define BOOST_MULTI_INDEX_CK_ENUM(macro, data)
Definition: composite_key.hpp:79
#define BOOST_MULTI_INDEX_CK_RESULT_HASH_SUPER
Value:
composite_key_hash< \
/* the argument is a PP list */ \
(detail::nth_composite_key_hash, \
(BOOST_DEDUCED_TYPENAME CompositeKeyResult::composite_key_type, \
BOOST_PP_NIL))) \
>
#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N(z, n, list)
Definition: composite_key.hpp:101
#define BOOST_DEDUCED_TYPENAME
Definition: suffix.hpp:465
#define BOOST_MULTI_INDEX_CK_ENUM(macro, data)
Definition: composite_key.hpp:79
#define BOOST_MULTI_INDEX_CK_RESULT_LESS_SUPER
Value:
composite_key_compare< \
/* the argument is a PP list */ \
(detail::nth_composite_key_less, \
(BOOST_DEDUCED_TYPENAME CompositeKeyResult::composite_key_type, \
BOOST_PP_NIL))) \
>
#define BOOST_MULTI_INDEX_CK_APPLY_METAFUNCTION_N(z, n, list)
Definition: composite_key.hpp:101
#define BOOST_DEDUCED_TYPENAME
Definition: suffix.hpp:465
#define BOOST_MULTI_INDEX_CK_ENUM(macro, data)
Definition: composite_key.hpp:79
#define BOOST_MULTI_INDEX_CK_TEMPLATE_PARM (   z,
  n,
  text 
)    typename BOOST_PP_CAT(text,n) BOOST_PP_EXPR_IF(n,=tuples::null_type)
#define BOOST_MULTI_INDEX_COMPOSITE_KEY_SIZE   10
#define BOOST_MULTI_INDEX_LIMIT_COMPOSITE_KEY_SIZE   10