1 /*=============================================================================
2     Copyright (c) 2009-2010 Hartmut Kaiser
3     Copyright (c) 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_DETAIL_STRUCT_PROXY_TYPE_HPP
10 #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP
11 
12 #include <boost/fusion/support/config.hpp>
13 #include <boost/fusion/adapted/struct/detail/namespace.hpp>
14 
15 #define BOOST_FUSION_PROXY_PREFIX() obj.
16 
17 #define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL(                       \
18     WRAPPED_TYPE,NAMESPACE_SEQ,NAME)                                            \
19                                                                                 \
20     BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ)         \
21                                                                                 \
22     struct NAME                                                                 \
23     {                                                                           \
24         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED                                \
25         NAME(WRAPPED_TYPE& in_obj)                                              \
26           : obj(in_obj)                                                         \
27         {}                                                                      \
28                                                                                 \
29         WRAPPED_TYPE& obj;                                                      \
30                                                                                 \
31     private:                                                                    \
32         NAME& operator= (NAME const&);                                          \
33     };                                                                          \
34                                                                                 \
35     BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
36 
37 #define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE(                            \
38     WRAPPED_TYPE, NAMESPACE_SEQ, NAME)                                          \
39                                                                                 \
40     BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL(                           \
41         WRAPPED_TYPE, (0)NAMESPACE_SEQ, NAME)
42 
43 #endif
44