123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // (C) Copyright Tobias Schwinger
- //
- // Use modification and distribution are subject to the boost Software License,
- // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
- //------------------------------------------------------------------------------
- // no include guards, this file is guarded externally
- #ifdef __WAVE__
- // this file has been generated from the master.hpp file in the same directory
- # pragma wave option(preserve: 0)
- #endif
- #if !defined(BOOST_PP_VALUE)
- # include <boost/preprocessor/slot/slot.hpp>
- # include <boost/preprocessor/iteration/self.hpp>
- # include <boost/function_types/detail/encoding/def.hpp>
- # include <boost/function_types/detail/encoding/aliases_def.hpp>
- namespace boost { namespace function_types {
- namespace detail
- {
- template<class Tag, class RefTag> struct selector_bits
- {
- # define BOOST_PP_VALUE non_member|member|non_variadic|variadic
- # include BOOST_PP_ASSIGN_SLOT(1)
- BOOST_STATIC_CONSTANT(bits_t, value = (
- (::boost::function_types::detail::bits<Tag>::value & BOOST_FT_default_cc)
- | (::boost::function_types::detail::bits<RefTag>::value & BOOST_PP_SLOT(1))
- ));
- };
- template<bits_t SelectorBits> struct default_cc_tag;
-
- template<class Tag, class RefTag> struct retag_default_cc
- : detail::compound_tag
- < Tag, detail::default_cc_tag<
- ::boost::function_types::detail::selector_bits<Tag,RefTag>::value > >
- { };
- template<bits_t SelectorBits> struct default_cc_tag
- {
- typedef null_tag::bits bits;
- typedef null_tag::mask mask;
- };
- class test_class;
- typedef constant<BOOST_FT_cc_mask> cc_mask_constant;
- # define BOOST_FT_self \
- <boost/function_types/detail/pp_retag_default_cc/master.hpp>
- # define default_cc_ BOOST_FT_default_cc
- # define BOOST_PP_VALUE default_cc_|non_member|non_variadic
- # define BOOST_FT_tester void (*tester)()
- # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
- # include BOOST_PP_INCLUDE_SELF()
- # define BOOST_PP_VALUE default_cc_|non_member|variadic
- # define BOOST_FT_tester void (*tester)(...)
- # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
- # include BOOST_PP_INCLUDE_SELF()
- # define BOOST_PP_VALUE default_cc_|member|non_variadic
- # define BOOST_FT_tester void (test_class::*tester)()
- # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
- # include BOOST_PP_INCLUDE_SELF()
- # define BOOST_PP_VALUE default_cc_|member|variadic
- # define BOOST_FT_tester void (test_class::*tester)(...)
- # define BOOST_PP_INDIRECT_SELF BOOST_FT_self
- # include BOOST_PP_INCLUDE_SELF()
- # undef default_cc_
- # undef BOOST_FT_self
- } } } // namespace ::boost::function_types::detail
- # include <boost/function_types/detail/encoding/aliases_undef.hpp>
- # include <boost/function_types/detail/encoding/undef.hpp>
- #else // if defined(BOOST_PP_VALUE)
- # include BOOST_PP_ASSIGN_SLOT(1)
- template<> struct default_cc_tag<BOOST_PP_SLOT(1)>
- {
- typedef BOOST_FT_tester;
- typedef mpl::bitand_<components<tester>::bits,cc_mask_constant> bits;
- typedef cc_mask_constant mask;
- };
- # undef BOOST_FT_tester
- #endif
|