Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:43:31

0001 // Copyright Cromwell D. Enage 2019.
0002 // Distributed under the Boost Software License, Version 1.0.
0003 // (See accompanying file LICENSE_1_0.txt or copy at
0004 // http://www.boost.org/LICENSE_1_0.txt)
0005 
0006 #ifndef BOOST_PARAMETER_PREPROCESSOR_NO_SPEC_HPP
0007 #define BOOST_PARAMETER_PREPROCESSOR_NO_SPEC_HPP
0008 
0009 #include <boost/parameter/aux_/preprocessor/impl/function_name.hpp>
0010 #include <boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp>
0011 
0012 // Exapnds to a variadic function header that is enabled if and only if all
0013 // its arguments are tagged arguments.  All arguments are accessible via args
0014 // and keywords only.
0015 #define BOOST_PARAMETER_NO_SPEC_FUNCTION(result, name)                       \
0016     BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, name, 0)                   \
0017     BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(name, 0);                     \
0018     BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD(name, name, 0, 0)              \
0019     BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(name, 0)
0020 /**/
0021 
0022 #include <boost/preprocessor/control/expr_if.hpp>
0023 #include <boost/preprocessor/control/if.hpp>
0024 
0025 // Helper macro for BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION,
0026 // BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION,
0027 // BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR, and
0028 // and BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR.
0029 #define BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, impl, c)   \
0030     BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, impl, c)                   \
0031     BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD(                               \
0032         name                                                                 \
0033       , impl                                                                 \
0034       , BOOST_PP_IF(BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(impl), 0, 1)   \
0035       , c                                                                    \
0036     )                                                                        \
0037     BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(impl, c)                      \
0038     BOOST_PP_EXPR_IF(c, const)
0039 /**/
0040 
0041 // Exapnds to a variadic member function header that is enabled if and only if
0042 // all its arguments are tagged arguments.  All arguments are accessible via
0043 // args and keywords only.
0044 #define BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION(result, name)                \
0045     BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, name, 0)
0046 /**/
0047 
0048 // Exapnds to a const-qualified variadic member function header that is
0049 // enabled if and only if all its arguments are tagged arguments.  All
0050 // arguments are accessible via args and keywords only.
0051 #define BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION(result, name)          \
0052     BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, name, 1)
0053 /**/
0054 
0055 // Exapnds to a variadic function call operator header that is enabled if and
0056 // only if all its arguments are tagged arguments.  All arguments are
0057 // accessible via args and keywords only.
0058 #define BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR(result)               \
0059     BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(                             \
0060         result, operator(), operator, 0                                      \
0061     )
0062 /**/
0063 
0064 // Exapnds to a const-qualified variadic function call operator header that is
0065 // enabled if and only if all its arguments are tagged arguments.  All
0066 // arguments are accessible via args and keywords only.
0067 #define BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR(result)         \
0068     BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(                             \
0069         result, operator(), operator, 1                                      \
0070     )
0071 /**/
0072 
0073 #endif  // include guard
0074