sick_visionary_cpp_shared
3pp
boost
multi_index
detail
ord_index_args.hpp
Go to the documentation of this file.
1
/* Copyright 2003-2013 Joaquin M Lopez Munoz.
2
* Distributed under the Boost Software License, Version 1.0.
3
* (See accompanying file LICENSE_1_0.txt or copy at
4
* http://www.boost.org/LICENSE_1_0.txt)
5
*
6
* See http://www.boost.org/libs/multi_index for library home page.
7
*/
8
9
#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP
10
#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP
11
12
#if defined(_MSC_VER)
13
#pragma once
14
#endif
15
16
#include <
boost/config.hpp
>
/* keep it first to prevent nasty warns in MSVC */
17
#include <
boost/mpl/aux_/na.hpp
>
18
#include <
boost/mpl/eval_if.hpp
>
19
#include <
boost/mpl/identity.hpp
>
20
#include <
boost/mpl/if.hpp
>
21
#include <
boost/multi_index/tag.hpp
>
22
#include <
boost/static_assert.hpp
>
23
#include <
boost/type_traits/is_same.hpp
>
24
#include <functional>
25
26
namespace
boost
{
27
28
namespace
multi_index{
29
30
namespace
detail{
31
32
/* Oredered index specifiers can be instantiated in two forms:
33
*
34
* (ordered_unique|ordered_non_unique)<
35
* KeyFromValue,Compare=std::less<KeyFromValue::result_type> >
36
* (ordered_unique|ordered_non_unique)<
37
* TagList,KeyFromValue,Compare=std::less<KeyFromValue::result_type> >
38
*
39
* index_args implements the machinery to accept this argument-dependent
40
* polymorphism.
41
*/
42
43
template
<
typename
KeyFromValue>
44
struct
index_args_default_compare
45
{
46
typedef
std::less<typename KeyFromValue::result_type>
type
;
47
};
48
49
template
<
typename
Arg1,
typename
Arg2,
typename
Arg3>
50
struct
ordered_index_args
51
{
52
typedef
is_tag<Arg1>
full_form
;
53
54
typedef
typename
mpl::if_
<
55
full_form
,
56
Arg1,
57
tag< >
>
::type
tag_list_type
;
58
typedef
typename
mpl::if_
<
59
full_form
,
60
Arg2,
61
Arg1>
::type
key_from_value_type
;
62
typedef
typename
mpl::if_
<
63
full_form
,
64
Arg3,
65
Arg2>
::type
supplied_compare_type
;
66
typedef
typename
mpl::eval_if
<
67
mpl::is_na<supplied_compare_type>
,
68
index_args_default_compare<key_from_value_type>
,
69
mpl::identity<supplied_compare_type>
70
>
::type
compare_type
;
71
72
BOOST_STATIC_ASSERT
(
is_tag<tag_list_type>::value
);
73
BOOST_STATIC_ASSERT
(!
mpl::is_na<key_from_value_type>::value
);
74
BOOST_STATIC_ASSERT
(!
mpl::is_na<compare_type>::value
);
75
};
76
77
}
/* namespace multi_index::detail */
78
79
}
/* namespace multi_index */
80
81
}
/* namespace boost */
82
83
#endif
boost::multi_index::detail::index_args_default_compare
Definition:
ord_index_args.hpp:44
boost::mpl::is_na
Definition:
na.hpp:25
identity.hpp
config.hpp
static_assert.hpp
tag.hpp
boost::type
Definition:
type.hpp:14
boost::multi_index::detail::is_tag
Definition:
multi_index/tag.hpp:55
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
boost::multi_index::detail::ordered_index_args::key_from_value_type
mpl::if_< full_form, Arg2, Arg1 >::type key_from_value_type
Definition:
ord_index_args.hpp:61
na.hpp
boost::mpl::identity
Definition:
mpl/identity.hpp:25
is_same.hpp
boost::multi_index::detail::ordered_index_args::tag_list_type
mpl::if_< full_form, Arg1, tag< > >::type tag_list_type
Definition:
ord_index_args.hpp:57
eval_if.hpp
boost::multi_index::detail::ordered_index_args::compare_type
mpl::eval_if< mpl::is_na< supplied_compare_type >, index_args_default_compare< key_from_value_type >, mpl::identity< supplied_compare_type > >::type compare_type
Definition:
ord_index_args.hpp:70
boost::multi_index::tag
Definition:
multi_index/tag.hpp:68
boost::multi_index::detail::ordered_index_args::supplied_compare_type
mpl::if_< full_form, Arg3, Arg2 >::type supplied_compare_type
Definition:
ord_index_args.hpp:65
boost::mpl::eval_if
Definition:
gcc/basic_bind.hpp:408
boost::multi_index::detail::ordered_index_args::full_form
is_tag< Arg1 > full_form
Definition:
ord_index_args.hpp:52
boost::mpl::if_
Definition:
dmc/basic_bind.hpp:374
boost::multi_index::detail::index_args_default_compare::type
std::less< typename KeyFromValue::result_type > type
Definition:
ord_index_args.hpp:46
if.hpp
boost::multi_index::detail::ordered_index_args
Definition:
ord_index_args.hpp:50
boost::multi_index::detail::ordered_index_args::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT(is_tag< tag_list_type >::value)
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:45:34