1/*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6==============================================================================*/
7#if !defined(FUSION_MPL_ITERATOR_CATEGORY_07212005_0923)
8#define FUSION_MPL_ITERATOR_CATEGORY_07212005_0923
9
10namespace boost { namespace mpl
11{
12 struct forward_iterator_tag;
13 struct bidirectional_iterator_tag;
14 struct random_access_iterator_tag;
15}}
16
17namespace boost { namespace fusion
18{
19 struct forward_traversal_tag;
20 struct bidirectional_traversal_tag;
21 struct random_access_traversal_tag;
22}}
23
24namespace boost { namespace fusion { namespace detail
25{
26 template <typename Category>
27 struct mpl_iterator_category;
28
29 template <>
30 struct mpl_iterator_category<mpl::forward_iterator_tag>
31 {
32 typedef forward_traversal_tag type;
33 };
34
35 template <>
36 struct mpl_iterator_category<mpl::bidirectional_iterator_tag>
37 {
38 typedef bidirectional_traversal_tag type;
39 };
40
41 template <>
42 struct mpl_iterator_category<mpl::random_access_iterator_tag>
43 {
44 typedef random_access_traversal_tag type;
45 };
46
47 template <>
48 struct mpl_iterator_category<forward_traversal_tag>
49 {
50 typedef forward_traversal_tag type;
51 };
52
53 template <>
54 struct mpl_iterator_category<bidirectional_traversal_tag>
55 {
56 typedef bidirectional_traversal_tag type;
57 };
58
59 template <>
60 struct mpl_iterator_category<random_access_traversal_tag>
61 {
62 typedef random_access_traversal_tag type;
63 };
64}}}
65
66#endif
67

source code of include/boost/fusion/support/detail/mpl_iterator_category.hpp