From fbe6a2a52edcd0cf6b916ec6af2adba0515ed21b Mon Sep 17 00:00:00 2001 From: Paul Mensonides Date: Mon, 6 Jan 2003 01:07:12 +0000 Subject: [PATCH] predicate support for object-like config macros [SVN r16767] --- .../boost/preprocessor/facilities/is_1.hpp | 24 ++++++++++ .../preprocessor/facilities/is_empty.hpp | 44 +++++++++++++++++++ .../preprocessor/facilities/is_empty_or_1.hpp | 31 +++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 include/boost/preprocessor/facilities/is_1.hpp create mode 100644 include/boost/preprocessor/facilities/is_empty.hpp create mode 100644 include/boost/preprocessor/facilities/is_empty_or_1.hpp diff --git a/include/boost/preprocessor/facilities/is_1.hpp b/include/boost/preprocessor/facilities/is_1.hpp new file mode 100644 index 0000000..e53dc8c --- /dev/null +++ b/include/boost/preprocessor/facilities/is_1.hpp @@ -0,0 +1,24 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2003. Permission to copy, use, * +# * modify, sell, and distribute this software is granted provided * +# * this copyright notice appears in all copies. This software is * +# * provided "as is" without express or implied warranty, and with * +# * no claim at to its suitability for any purpose. * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP +# define BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP +# +# include +# include +# +# /* BOOST_PP_IS_1 */ +# +# define BOOST_PP_IS_1(x) BOOST_PP_IS_EMPTY(BOOST_PP_CAT(BOOST_PP_IS_1_HELPER_, x)) +# define BOOST_PP_IS_1_HELPER_1 +# +# endif diff --git a/include/boost/preprocessor/facilities/is_empty.hpp b/include/boost/preprocessor/facilities/is_empty.hpp new file mode 100644 index 0000000..7b4f6ee --- /dev/null +++ b/include/boost/preprocessor/facilities/is_empty.hpp @@ -0,0 +1,44 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2003. Permission to copy, use, * +# * modify, sell, and distribute this software is granted provided * +# * this copyright notice appears in all copies. This software is * +# * provided "as is" without express or implied warranty, and with * +# * no claim at to its suitability for any purpose. * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP +# define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP +# +# include +# include +# include +# include +# include +# +# /* BOOST_PP_IS_EMPTY */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() +# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(x BOOST_PP_IS_EMPTY_HELPER) +# define BOOST_PP_IS_EMPTY_I(contents) BOOST_PP_TUPLE_ELEM(2, 1, (BOOST_PP_IS_EMPTY_DEF_ ## contents())) +# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 1, 1 BOOST_PP_EMPTY +# define BOOST_PP_IS_EMPTY_HELPER() , 0 +# else +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() +# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(BOOST_PP_IS_EMPTY_HELPER x ()) +# define BOOST_PP_IS_EMPTY_I(test) BOOST_PP_IS_EMPTY_II(BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test))) +# define BOOST_PP_IS_EMPTY_II(id) id +# else +# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I((BOOST_PP_IS_EMPTY_HELPER x ())) +# define BOOST_PP_IS_EMPTY_I(par) BOOST_PP_IS_EMPTY_II ## par +# define BOOST_PP_IS_EMPTY_II(test) BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test)) +# endif +# define BOOST_PP_IS_EMPTY_HELPER() 1 +# define BOOST_PP_IS_EMPTY_DEF_1 1, BOOST_PP_NIL +# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 0, BOOST_PP_NIL +# endif +# +# endif diff --git a/include/boost/preprocessor/facilities/is_empty_or_1.hpp b/include/boost/preprocessor/facilities/is_empty_or_1.hpp new file mode 100644 index 0000000..0809612 --- /dev/null +++ b/include/boost/preprocessor/facilities/is_empty_or_1.hpp @@ -0,0 +1,31 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2003. Permission to copy, use, * +# * modify, sell, and distribute this software is granted provided * +# * this copyright notice appears in all copies. This software is * +# * provided "as is" without express or implied warranty, and with * +# * no claim at to its suitability for any purpose. * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP +# define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP +# +# include +# include +# include +# include +# +# /* BOOST_PP_IS_EMPTY_OR_1 */ +# +# define BOOST_PP_IS_EMPTY_OR_1(x) \ + BOOST_PP_IIF( \ + BOOST_PP_IS_EMPTY(x BOOST_PP_EMPTY()), \ + 1 BOOST_PP_EMPTY, \ + BOOST_PP_IS_1 \ + )(x) \ + /**/ +# +# endif