]> git.donarmstrong.com Git - rsem.git/blob - boost/fusion/adapted/struct/adapt_struct.hpp
Added posterior standard deviation of counts as output if either '--calc-pme' or...
[rsem.git] / boost / fusion / adapted / struct / adapt_struct.hpp
1 /*=============================================================================
2     Copyright (c) 2001-2007 Joel de Guzman
3     Copyright (c) 2009-2010 Christopher Schmidt
4
5     Distributed under the Boost Software License, Version 1.0. (See accompanying
6     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8
9 #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
10 #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
11
12 #include <boost/preprocessor/cat.hpp>
13 #include <boost/preprocessor/empty.hpp>
14 #include <boost/type_traits/add_reference.hpp>
15 #include <boost/type_traits/is_const.hpp>
16 #include <boost/type_traits/add_const.hpp>
17 #include <boost/type_traits/remove_const.hpp>
18
19 #include <boost/fusion/adapted/struct/detail/extension.hpp>
20 #include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
21 #include <boost/fusion/adapted/struct/detail/at_impl.hpp>
22 #include <boost/fusion/adapted/struct/detail/is_view_impl.hpp>
23 #include <boost/fusion/adapted/struct/detail/is_sequence_impl.hpp>
24 #include <boost/fusion/adapted/struct/detail/value_at_impl.hpp>
25 #include <boost/fusion/adapted/struct/detail/category_of_impl.hpp>
26 #include <boost/fusion/adapted/struct/detail/size_impl.hpp>
27 #include <boost/fusion/adapted/struct/detail/begin_impl.hpp>
28 #include <boost/fusion/adapted/struct/detail/end_impl.hpp>
29 #include <boost/fusion/adapted/struct/detail/value_of_impl.hpp>
30 #include <boost/fusion/adapted/struct/detail/deref_impl.hpp>
31
32 #define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y)                                \
33     ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_1
34 #define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y)                                \
35     ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_0
36 #define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
37 #define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END
38
39 #define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\
40     BOOST_FUSION_ADAPT_STRUCT_C_BASE(                                           \
41         TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2)
42
43 #define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \
44     BOOST_FUSION_ADAPT_STRUCT_BASE(                                             \
45         (1)TEMPLATE_PARAMS_SEQ,                                                 \
46         (1)NAME_SEQ,                                                            \
47         struct_tag,                                                             \
48         0,                                                                      \
49         BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END),       \
50         BOOST_FUSION_ADAPT_STRUCT_C)
51
52 #define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES)                             \
53     BOOST_FUSION_ADAPT_STRUCT_BASE(                                             \
54         (0),                                                                    \
55         (0)(NAME),                                                              \
56         struct_tag,                                                             \
57         0,                                                                      \
58         BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END),       \
59         BOOST_FUSION_ADAPT_STRUCT_C)
60
61 #define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES)                     \
62     BOOST_FUSION_ADAPT_STRUCT_BASE(                                             \
63         (0),                                                                    \
64         (0)(NAME),                                                              \
65         struct_tag,                                                             \
66         1,                                                                      \
67         BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END),       \
68         BOOST_FUSION_ADAPT_STRUCT_C)
69
70 #endif