Chris@16: # /* ************************************************************************** Chris@16: # * * Chris@16: # * (C) Copyright Paul Mensonides 2002. Chris@16: # * Distributed under the Boost Software License, Version 1.0. (See Chris@16: # * accompanying file LICENSE_1_0.txt or copy at Chris@16: # * http://www.boost.org/LICENSE_1_0.txt) Chris@16: # * * Chris@16: # ************************************************************************** */ Chris@16: # Chris@16: # /* See http://www.boost.org for most recent version. */ Chris@16: # Chris@16: # ifndef BOOST_PREPROCESSOR_DETAIL_CHECK_HPP Chris@16: # define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP Chris@16: # Chris@16: # include Chris@16: # include Chris@16: # Chris@16: # /* BOOST_PP_CHECK */ Chris@16: # Chris@16: # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() Chris@16: # define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_D(x, type) Chris@16: # else Chris@16: # define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_OO((x, type)) Chris@16: # define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_D ## par Chris@16: # endif Chris@16: # Chris@16: # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() Chris@16: # define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x)) Chris@16: # define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk) Chris@16: # define BOOST_PP_CHECK_2(res, _) res Chris@16: # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() Chris@16: # define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(type x) Chris@16: # define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk) Chris@16: # define BOOST_PP_CHECK_2(chk) BOOST_PP_CHECK_3((BOOST_PP_CHECK_RESULT_ ## chk)) Chris@16: # define BOOST_PP_CHECK_3(im) BOOST_PP_CHECK_5(BOOST_PP_CHECK_4 im) Chris@16: # define BOOST_PP_CHECK_4(res, _) res Chris@16: # define BOOST_PP_CHECK_5(res) res Chris@16: # else /* DMC */ Chris@16: # define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_OO((type x)) Chris@16: # define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_0 ## par Chris@16: # define BOOST_PP_CHECK_0(chk) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, chk)) Chris@16: # define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk) Chris@16: # define BOOST_PP_CHECK_2(res, _) res Chris@16: # endif Chris@16: # Chris@16: # define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL Chris@16: # Chris@16: # endif