Chris@16: // Copyright David Abrahams 2005. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: #ifndef BOOST_PARAMETER_MATCH_DWA2005714_HPP Chris@16: # define BOOST_PARAMETER_MATCH_DWA2005714_HPP Chris@16: Chris@16: # include Chris@16: # include Chris@16: Chris@16: # if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) Chris@16: // Temporary version of BOOST_PP_SEQ_ENUM until Paul M. integrates the workaround. Chris@16: # define BOOST_PARAMETER_SEQ_ENUM_I(size,seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq Chris@16: # define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PARAMETER_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq) Chris@16: # else Chris@16: # define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM(seq) Chris@16: # endif Chris@16: Chris@16: # if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) Chris@16: Chris@16: # include Chris@16: # include Chris@16: # include Chris@16: # include Chris@16: # include Chris@16: Chris@16: # define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ Chris@16: BOOST_PP_ENUM_TRAILING_PARAMS( \ Chris@16: BOOST_PP_SUB( \ Chris@16: BOOST_PARAMETER_MAX_ARITY \ Chris@16: , BOOST_PP_SEQ_SIZE(ArgTypes) \ Chris@16: ) \ Chris@16: , ::boost::parameter::void_ BOOST_PP_INTERCEPT \ Chris@16: ) Chris@16: Chris@16: # else Chris@16: Chris@16: # define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) Chris@16: Chris@16: # endif Chris@16: Chris@16: // Chris@16: // Generates, e.g. Chris@16: // Chris@16: // typename dfs_params::match::type name = dfs_params() Chris@16: // Chris@16: // with workarounds for Borland compatibility. Chris@16: // Chris@16: Chris@16: # define BOOST_PARAMETER_MATCH(ParameterSpec, ArgTypes, name) \ Chris@16: typename ParameterSpec ::match< \ Chris@16: BOOST_PARAMETER_SEQ_ENUM(ArgTypes) \ Chris@16: BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ Chris@16: >::type name = ParameterSpec () Chris@16: Chris@16: #endif // BOOST_PARAMETER_MATCH_DWA2005714_HPP