Chris@16
|
1 /*=============================================================================
|
Chris@16
|
2 Copyright (c) 2009-2010 Hartmut Kaiser
|
Chris@16
|
3 Copyright (c) 2010 Christopher Schmidt
|
Chris@16
|
4
|
Chris@16
|
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
7 ==============================================================================*/
|
Chris@16
|
8
|
Chris@16
|
9 #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
|
Chris@16
|
10 #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
|
Chris@16
|
11
|
Chris@101
|
12 #include <boost/fusion/support/config.hpp>
|
Chris@16
|
13 #include <boost/preprocessor/dec.hpp>
|
Chris@16
|
14 #include <boost/preprocessor/control/if.hpp>
|
Chris@16
|
15 #include <boost/preprocessor/seq/seq.hpp>
|
Chris@16
|
16 #include <boost/preprocessor/seq/for_each.hpp>
|
Chris@16
|
17 #include <boost/preprocessor/seq/size.hpp>
|
Chris@16
|
18 #include <boost/preprocessor/repetition/repeat.hpp>
|
Chris@16
|
19 #include <boost/preprocessor/tuple/eat.hpp>
|
Chris@16
|
20
|
Chris@16
|
21 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I(R,DATA,ELEM) \
|
Chris@16
|
22 namespace ELEM {
|
Chris@16
|
23 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I(Z,I,DATA) }
|
Chris@16
|
24 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I(Z,I,ELEM) ELEM::
|
Chris@16
|
25
|
Chris@16
|
26 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
|
Chris@16
|
27 BOOST_PP_IF( \
|
Chris@16
|
28 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
|
Chris@16
|
29 BOOST_PP_SEQ_FOR_EACH_R, \
|
Chris@16
|
30 BOOST_PP_TUPLE_EAT(4))( \
|
Chris@16
|
31 1, \
|
Chris@16
|
32 BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I, \
|
Chris@16
|
33 _, \
|
Chris@16
|
34 BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ))
|
Chris@16
|
35
|
Chris@16
|
36 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) \
|
Chris@16
|
37 BOOST_PP_REPEAT_1( \
|
Chris@16
|
38 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
|
Chris@16
|
39 BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I, \
|
Chris@16
|
40 _)
|
Chris@16
|
41
|
Chris@16
|
42 #define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION(NAMESPACE_SEQ) \
|
Chris@16
|
43 BOOST_PP_IF( \
|
Chris@16
|
44 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \
|
Chris@16
|
45 BOOST_PP_SEQ_FOR_EACH_R, \
|
Chris@16
|
46 BOOST_PP_TUPLE_EAT(4))( \
|
Chris@16
|
47 1, \
|
Chris@16
|
48 BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I, \
|
Chris@16
|
49 _, \
|
Chris@16
|
50 BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ))
|
Chris@16
|
51
|
Chris@16
|
52 #endif
|