]> git.donarmstrong.com Git - rsem.git/blob - boost/fusion/support/detail/mpl_iterator_category.hpp
Updated boost to v1.55.0
[rsem.git] / boost / fusion / support / detail / mpl_iterator_category.hpp
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
10 namespace boost { namespace mpl 
11 {
12     struct forward_iterator_tag;
13     struct bidirectional_iterator_tag;
14     struct random_access_iterator_tag;
15 }}
16
17 namespace boost { namespace fusion
18 {
19     struct forward_traversal_tag;
20     struct bidirectional_traversal_tag;
21     struct random_access_traversal_tag;
22 }}
23
24 namespace 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