1 /*============================================================================= 2 Copyright (c) 2001-2007 Joel de Guzman 3 Copyright (c) 2009-2010 Hartmut Kaiser 4 Copyright (c) 2010-2011 Christopher Schmidt 5 6 Distributed under the Boost Software License, Version 1.0. (See accompanying 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8 ==============================================================================*/ 9 10 #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP 11 #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP 12 13 #include <boost/fusion/support/config.hpp> 14 #include <boost/fusion/adapted/struct/adapt_struct.hpp> 15 #include <boost/fusion/adapted/struct/detail/proxy_type.hpp> 16 #include <boost/preprocessor/config/config.hpp> 17 18 #ifdef BOOST_PP_VARIADICS 19 20 # define BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ 21 WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ...) \ 22 \ 23 BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ 24 WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ 25 \ 26 BOOST_FUSION_ADAPT_STRUCT_AS_VIEW( \ 27 BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ 28 (0)NAMESPACE_SEQ)NAME, \ 29 __VA_ARGS__) 30 31 # define BOOST_FUSION_ADAPT_STRUCT_NAMED(WRAPPED_TYPE, NAME, ...) \ 32 BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ 33 WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,__VA_ARGS__) 34 35 36 #else // BOOST_PP_VARIADICS 37 38 # define BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ 39 WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ 40 \ 41 BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ 42 WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ 43 \ 44 BOOST_FUSION_ADAPT_STRUCT_AS_VIEW( \ 45 BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ 46 (0)NAMESPACE_SEQ)NAME, \ 47 ATTRIBUTES) 48 49 # define BOOST_FUSION_ADAPT_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ 50 BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ 51 WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,ATTRIBUTES) 52 53 #endif 54 55 #endif 56