• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*=============================================================================
2     Copyright (c) 2010-2011 Christopher Schmidt
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 
8 #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
9 #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
10 
11 #include <boost/fusion/support/config.hpp>
12 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
13 #include <boost/fusion/adapted/struct/detail/define_struct.hpp>
14 #include <boost/preprocessor/cat.hpp>
15 
16 #define BOOST_FUSION_DEFINE_TPL_STRUCT(                                         \
17     TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES)                       \
18                                                                                 \
19     BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL(                                        \
20         TEMPLATE_PARAMS_SEQ,                                                    \
21         (0)NAMESPACE_SEQ,                                                       \
22         NAME,                                                                   \
23         BOOST_PP_CAT(BOOST_FUSION_DEFINE_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END),  \
24         2)                                                                      \
25                                                                                 \
26     BOOST_FUSION_ADAPT_TPL_STRUCT(                                              \
27         TEMPLATE_PARAMS_SEQ,                                                    \
28         (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME)\
29             TEMPLATE_PARAMS_SEQ,                                                \
30         ATTRIBUTES)
31 
32 #define BOOST_FUSION_DEFINE_STRUCT(NAMESPACE_SEQ, NAME, ATTRIBUTES)             \
33     BOOST_FUSION_DEFINE_STRUCT_IMPL(                                            \
34         (0)NAMESPACE_SEQ,                                                       \
35         NAME,                                                                   \
36         BOOST_PP_CAT(BOOST_FUSION_DEFINE_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END),  \
37         2)                                                                      \
38                                                                                 \
39     BOOST_FUSION_ADAPT_STRUCT(                                                  \
40         BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME, \
41         ATTRIBUTES)
42 
43 #endif
44