2 // (C) Copyright Tobias Schwinger
4 // Use modification and distribution are subject to the boost Software License,
5 // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
7 //------------------------------------------------------------------------------
9 // no include guards, this file is guarded externally
12 // this file has been generated from the master.hpp file in the same directory
13 # pragma wave option(preserve: 0)
16 #if !defined(BOOST_PP_VALUE)
17 # include <boost/preprocessor/slot/slot.hpp>
18 # include <boost/preprocessor/iteration/self.hpp>
20 # include <boost/function_types/detail/encoding/def.hpp>
21 # include <boost/function_types/detail/encoding/aliases_def.hpp>
23 namespace boost { namespace function_types {
27 template<class Tag, class RefTag> struct selector_bits
29 # define BOOST_PP_VALUE non_member|member|non_variadic|variadic
30 # include BOOST_PP_ASSIGN_SLOT(1)
32 BOOST_STATIC_CONSTANT(bits_t, value = (
33 (::boost::function_types::detail::bits<Tag>::value & BOOST_FT_default_cc)
34 | (::boost::function_types::detail::bits<RefTag>::value & BOOST_PP_SLOT(1))
38 template<bits_t SelectorBits> struct default_cc_tag;
40 template<class Tag, class RefTag> struct retag_default_cc
41 : detail::compound_tag
42 < Tag, detail::default_cc_tag<
43 ::boost::function_types::detail::selector_bits<Tag,RefTag>::value > >
46 template<bits_t SelectorBits> struct default_cc_tag
48 typedef null_tag::bits bits;
49 typedef null_tag::mask mask;
53 typedef constant<BOOST_FT_cc_mask> cc_mask_constant;
55 # define BOOST_FT_self \
56 <boost/function_types/detail/pp_retag_default_cc/master.hpp>
58 # define default_cc_ BOOST_FT_default_cc
60 # define BOOST_PP_VALUE default_cc_|non_member|non_variadic
61 # define BOOST_FT_tester void (*tester)()
62 # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
63 # include BOOST_PP_INCLUDE_SELF()
65 # define BOOST_PP_VALUE default_cc_|non_member|variadic
66 # define BOOST_FT_tester void (*tester)(...)
67 # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
68 # include BOOST_PP_INCLUDE_SELF()
70 # define BOOST_PP_VALUE default_cc_|member|non_variadic
71 # define BOOST_FT_tester void (test_class::*tester)()
72 # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
73 # include BOOST_PP_INCLUDE_SELF()
75 # define BOOST_PP_VALUE default_cc_|member|variadic
76 # define BOOST_FT_tester void (test_class::*tester)(...)
77 # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
78 # include BOOST_PP_INCLUDE_SELF()
84 } } } // namespace ::boost::function_types::detail
86 # include <boost/function_types/detail/encoding/aliases_undef.hpp>
87 # include <boost/function_types/detail/encoding/undef.hpp>
89 #else // if defined(BOOST_PP_VALUE)
91 # include BOOST_PP_ASSIGN_SLOT(1)
93 template<> struct default_cc_tag<BOOST_PP_SLOT(1)>
95 typedef BOOST_FT_tester;
96 typedef mpl::bitand_<components<tester>::bits,cc_mask_constant> bits;
97 typedef cc_mask_constant mask;
100 # undef BOOST_FT_tester