104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| // (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
 | |
| 
 | 
