Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:29:45

0001 /*
0002 
0003 @Copyright Barrett Adair 2015-2017
0004 Distributed under the Boost Software License, Version 1.0.
0005 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
0006 
0007 */
0008 
0009 #ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP
0010 #define BOOST_CLBL_TRTS_DETAIL_PMF_HPP
0011 
0012 #include <boost/callable_traits/detail/forward_declarations.hpp>
0013 #include <boost/callable_traits/detail/set_function_qualifiers.hpp>
0014 #include <boost/callable_traits/detail/qualifier_flags.hpp>
0015 #include <boost/callable_traits/detail/default_callable_traits.hpp>
0016 #include <boost/callable_traits/detail/utility.hpp>
0017 
0018 namespace boost { namespace callable_traits { namespace detail {
0019 
0020 template<qualifier_flags Applied, bool IsTransactionSafe, bool IsNoExcept,
0021     typename CallingConvention, typename T, typename Return,
0022     typename... Args>
0023 struct set_member_function_qualifiers_t;
0024 
0025 template<qualifier_flags Applied, bool IsTransactionSafe, bool IsNoexcept,
0026     typename CallingConvention, typename T, typename Return,
0027     typename... Args>
0028 struct set_varargs_member_function_qualifiers_t;
0029 
0030 template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept,
0031     typename... Ts>
0032 using set_member_function_qualifiers =
0033     typename set_member_function_qualifiers_t<Flags, IsTransactionSafe,
0034         IsNoexcept, Ts...>::type;
0035 
0036 template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept,
0037     typename... Ts>
0038 using set_varargs_member_function_qualifiers =
0039     typename set_varargs_member_function_qualifiers_t<Flags,
0040         IsTransactionSafe, IsNoexcept, Ts...>::type;
0041 
0042 template<typename T>
0043 struct pmf : default_callable_traits<T> {};
0044 
0045 #define BOOST_CLBL_TRTS_CC_TAG dummy
0046 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0047 #define BOOST_CLBL_TRTS_CC
0048 #include <boost/callable_traits/detail/unguarded/pmf.hpp>
0049 #undef BOOST_CLBL_TRTS_CC
0050 #undef BOOST_CLBL_TRTS_CC_TAG
0051 #undef BOOST_CLBL_TRTS_VARARGS_CC
0052 
0053 #define BOOST_CLBL_TRTS_CC_TAG dummy
0054 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0055 #define BOOST_CLBL_TRTS_CC
0056 #include <boost/callable_traits/detail/unguarded/pmf_varargs.hpp>
0057 #undef BOOST_CLBL_TRTS_CC
0058 #undef BOOST_CLBL_TRTS_CC_TAG
0059 #undef BOOST_CLBL_TRTS_VARARGS_CC
0060 
0061 #ifdef BOOST_CLBL_TRTS_ENABLE_CDECL
0062 #define BOOST_CLBL_TRTS_CC_TAG cdecl_tag
0063 #define BOOST_CLBL_TRTS_VARARGS_CC __cdecl
0064 #define BOOST_CLBL_TRTS_CC __cdecl
0065 #include <boost/callable_traits/detail/unguarded/pmf.hpp>
0066 #undef BOOST_CLBL_TRTS_CC
0067 #undef BOOST_CLBL_TRTS_CC_TAG
0068 #undef BOOST_CLBL_TRTS_VARARGS_CC
0069 #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_CDECL
0070 
0071 // Defining this macro enables undocumented features, likely broken.
0072 // Too much work to maintain, but knock yourself out
0073 #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL
0074 #define BOOST_CLBL_TRTS_CC_TAG stdcall_tag
0075 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0076 #define BOOST_CLBL_TRTS_CC __stdcall
0077 #include <boost/callable_traits/detail/unguarded/pmf.hpp>
0078 #undef BOOST_CLBL_TRTS_CC
0079 #undef BOOST_CLBL_TRTS_CC_TAG
0080 #undef BOOST_CLBL_TRTS_VARARGS_CC
0081 #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL
0082 
0083 // Defining this macro enables undocumented features, likely broken.
0084 // Too much work to officially maintain, but knock yourself out
0085 #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL
0086 #define BOOST_CLBL_TRTS_CC_TAG fastcall_tag
0087 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
0088 #define BOOST_CLBL_TRTS_CC __fastcall
0089 #include <boost/callable_traits/detail/unguarded/pmf.hpp>
0090 #undef BOOST_CLBL_TRTS_CC
0091 #undef BOOST_CLBL_TRTS_CC_TAG
0092 #undef BOOST_CLBL_TRTS_VARARGS_CC
0093 #endif // #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL
0094 
0095 }}} // namespace boost::callable_traits::detail
0096 
0097 #endif // #ifndef BOOST_CLBL_TRTS_DETAIL_PMF_HPP