diff --git a/doc/headers.html b/doc/headers.html index 0fa119b..4046071 100644 --- a/doc/headers.html +++ b/doc/headers.html @@ -147,6 +147,7 @@
  • enum_params.hpp
  • enum_params_with_a_default.hpp
  • enum_params_with_defaults.hpp
  • +
  • enum_shifted_binary_params.hpp
  • enum_shifted_params.hpp
  • enum_shifted.hpp
  • enum_trailing.hpp
  • diff --git a/doc/headers/repetition/esbp.html b/doc/headers/repetition/esbp.html new file mode 100644 index 0000000..4d93edb --- /dev/null +++ b/doc/headers/repetition/esbp.html @@ -0,0 +1,20 @@ + + + repetition/enum_shifted_binary_params.hpp + + + +
    + The repetition/enum_shifted_binary_params.hpp header defines a construct that produces a comma-separated list of binary parameters. +
    +

    Usage

    +
    + #include <boost/preprocessor/repetition/enum_shifted_binary_params.hpp> +
    +

    Contents

    + + + diff --git a/doc/ref.html b/doc/ref.html index fe9cb09..66b40ec 100644 --- a/doc/ref.html +++ b/doc/ref.html @@ -62,6 +62,8 @@
  • ENUM_PARAMS_WITH_DEFAULTS*
  • ENUM_PARAMS_Z
  • ENUM_SHIFTED
  • +
  • ENUM_SHIFTED_BINARY_PARAMS
  • +
  • ENUM_SHIFTED_BINARY_PARAMS_Z
  • ENUM_SHIFTED_PARAMS
  • ENUM_SHIFTED_PARAMS_Z
  • ENUM_SHIFTED_z
  • diff --git a/doc/ref/esbp.html b/doc/ref/esbp.html new file mode 100644 index 0000000..413b64a --- /dev/null +++ b/doc/ref/esbp.html @@ -0,0 +1,54 @@ + + + BOOST_PP_ENUM_BINARY_PARAMS + + + +
    + The BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS macro generates a comma-separated, shifted list of binary parameters. +
    +

    Usage

    +
    + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) +
    +

    Arguments

    +
    +
    count
    +
    + The number of parameters to generate.  + Valid values range from 0 to BOOST_PP_LIMIT_REPEAT. +
    +
    p1
    +
    + The text of the first part of the parameter.  + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS concatenates numbers ranging from 0 to count - 1 + to generate parameters. +
    +
    p2
    +
    + The text of the first part of the parameter.  + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS concatenates numbers ranging from 0 to count - 1 + to generate parameters. +
    +
    +

    Remarks

    +
    + This macro expands to the comma-separated sequence: +
    + p1 ## 1 p2 ## 1, p1 ## 2 p2 ## 2, ... p1 ## count - 1 p2 ## count - 1 +
    +
    +
    + To use the z parameter passed from other macros that use BOOST_PP_REPEAT, see BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z. +
    +

    See Also

    + +

    Requirements

    +
    + Header:  <boost/preprocessor/repetition/enum_shifted_binary_params.hpp> +
    + + diff --git a/doc/ref/esbpz.html b/doc/ref/esbpz.html new file mode 100644 index 0000000..e9e53aa --- /dev/null +++ b/doc/ref/esbpz.html @@ -0,0 +1,56 @@ + + + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z + + + +
    + The BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z macro generates a comma-separated list, shifted of binary parameters.  + It reenters BOOST_PP_REPEAT with maximum efficiency. +
    +

    Usage

    +
    + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) +
    +

    Arguments

    +
    +
    z
    +
    + The next available BOOST_PP_REPEAT dimension. +
    +
    count
    +
    + The number of parameters to generate.  + Valid values range from 0 to BOOST_PP_LIMIT_REPEAT. +
    +
    p1
    +
    + The text of the first part of the parameter.  + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS concatenates numbers ranging from 0 to count - 1 + to generate parameters. +
    +
    p2
    +
    + The text of the first part of the parameter.  + BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS concatenates numbers ranging from 0 to count - 1 + to generate parameters. +
    +
    +

    Remarks

    +
    + This macro expands to the comma-separated sequence: +
    + p1 ## 1 p2 ## 1, p1 ## 2 p2 ## 2, ... p1 ## count - 1 p2 ## count - 1 +
    +
    +

    See Also

    + +

    Requirements

    +
    + Header:  <boost/preprocessor/repetition/enum_shifted_binary_params.hpp> +
    + + diff --git a/include/boost/preprocessor/repetition.hpp b/include/boost/preprocessor/repetition.hpp index 6e8bb3d..efcd60a 100644 --- a/include/boost/preprocessor/repetition.hpp +++ b/include/boost/preprocessor/repetition.hpp @@ -20,6 +20,7 @@ # include # include # include +# include # include # include # include diff --git a/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp b/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp new file mode 100644 index 0000000..f3d20fc --- /dev/null +++ b/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp @@ -0,0 +1,51 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2005. * +# * Distributed under the Boost Software License, Version 1.0. (See * +# * accompanying file LICENSE_1_0.txt or copy at * +# * http://www.boost.org/LICENSE_1_0.txt) * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP +# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP +# +# include +# include +# include +# include +# include +# include +# include +# include +# +# /* BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2)) +# else +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2) +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2)) +# endif +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp) +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, im) +# else +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, pp), BOOST_PP_TUPLE_ELEM(2, 1, pp)) +# endif +# +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(p1, BOOST_PP_INC(n)) BOOST_PP_CAT(p2, BOOST_PP_INC(n)) +# +# /* BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2)) +# else +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2) +# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2)) +# endif +# +# endif