diff --git a/.travis.yml b/.travis.yml index dd85603..cda9b52 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,6 +33,8 @@ install: - git submodule update --init tools/build - git submodule update --init libs/config - git submodule update --init tools/boostdep + - git submodule update --init tools/boost_install + - git submodule update --init libs/headers - cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor - python tools/boostdep/depinst/depinst.py preprocessor - ./bootstrap.sh diff --git a/appveyor.yml b/appveyor.yml index 3d07613..b43326f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -49,6 +49,8 @@ for: - git submodule update --init tools/build - git submodule update --init libs/config - git submodule update --init tools/boostdep + - git submodule update --init tools/boost_install + - git submodule update --init libs/headers - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\preprocessor - python tools/boostdep/depinst/depinst.py preprocessor - bootstrap diff --git a/doc/headers.html b/doc/headers.html index 58f33db..7df8cb0 100644 --- a/doc/headers.html +++ b/doc/headers.html @@ -230,6 +230,7 @@
  • variadic.hpp
  • variadic/
  • elem.hpp (v)
  • +
  • opt.hpp
  • size.hpp (v)
  • to_array.hpp (v)
  • diff --git a/doc/headers/variadic.html b/doc/headers/variadic.html index 0acc99c..c555e95 100644 --- a/doc/headers/variadic.html +++ b/doc/headers/variadic.html @@ -14,6 +14,7 @@

    Includes


    - © Copyright Edward Diener 2011,2013 + © Copyright Edward Diener 2011,2013,2019

    Distributed under the Boost Software License, Version 1.0. (See diff --git a/doc/headers/variadic/opt.html b/doc/headers/variadic/opt.html new file mode 100644 index 0000000..d65d592 --- /dev/null +++ b/doc/headers/variadic/opt.html @@ -0,0 +1,25 @@ + + variadic/opt.hpp + +

    + The variadic/opt.hpp header defines a macro that determines whether or not the __VA_OPT__ construct is supported. +
    +

    Usage

    +
    + #include <boost/preprocessor/variadic/opt.hpp> +
    +

    Contents

    + +
    +
    + © Copyright Edward Diener 2019 +
    +
    +

    Distributed under the Boost Software License, Version 1.0. (See + accompanying file LICENSE_1_0.txt or + copy at www.boost.org/LICENSE_1_0.txt)

    +
    + \ No newline at end of file diff --git a/doc/ref.html b/doc/ref.html index 102325a..749e881 100644 --- a/doc/ref.html +++ b/doc/ref.html @@ -298,6 +298,7 @@
  • VALUE
  • VARIADICS
  • VARIADIC_ELEM (v)
  • +
  • VARIADIC_OPT
  • VARIADIC_SEQ_TO_SEQ (v)
  • VARIADIC_SIZE (v)
  • VARIADIC_TO_ARRAY (v)
  • diff --git a/doc/ref/list_to_array_d.html b/doc/ref/list_to_array_d.html index 835d9e2..11ca731 100644 --- a/doc/ref/list_to_array_d.html +++ b/doc/ref/list_to_array_d.html @@ -30,5 +30,13 @@

    Requirements

    Header:  <boost/preprocessor/list/to_array.hpp>
    +
    +
    © Copyright Edward Diener 2011 +
    +
    +

    Distributed under the Boost Software License, Version 1.0. (See + accompanying file LICENSE_1_0.txt + or copy at www.boost.org/LICENSE_1_0.txt)

    +
    diff --git a/doc/ref/list_to_seq_r.html b/doc/ref/list_to_seq_r.html index cc7a854..83b42a6 100644 --- a/doc/ref/list_to_seq_r.html +++ b/doc/ref/list_to_seq_r.html @@ -28,5 +28,12 @@

    Requirements

    Header:  <boost/preprocessor/list/to_seq.hpp>
    +
    +
    © Copyright Edward Diener 2011
    +
    +

    Distributed under the Boost Software License, Version 1.0. (See + accompanying file LICENSE_1_0.txt + or copy at www.boost.org/LICENSE_1_0.txt)

    +
    diff --git a/doc/ref/tuple_elem.html b/doc/ref/tuple_elem.html index 0f4885f..ac57f3f 100644 --- a/doc/ref/tuple_elem.html +++ b/doc/ref/tuple_elem.html @@ -49,7 +49,7 @@ or
    Header:  <boost/preprocessor/tuple/elem.hpp>

    Sample Code

    -
    #include <boost/preprocessor/tuple/elem.hpp>

    #define TUPLE (a, b, c, d)

    BOOST_PP_TUPLE_ELEM(4, 0, TUPLE) // expands to a
    BOOST_PP_TUPLE_ELEM(4, 3, TUPLE) // expands to d

    // or for the variadic version (v)

    BOOST_PP_TUPLE_ELEM(0, TUPLE) // expands to a in the variadic version
    BOOST_PP_TUPLE_ELEM(3, TUPLE) // expands to d in the variadic version
    +
    #include <boost/preprocessor/tuple/elem.hpp>

    #define TUPLE (a, b, c, d)

    BOOST_PP_TUPLE_ELEM(4, 0, TUPLE) // expands to a
    BOOST_PP_TUPLE_ELEM(4, 3, TUPLE) // expands to d

    // or for the variadic version (v)

    BOOST_PP_TUPLE_ELEM(0, TUPLE) // expands to a in the variadic version
    BOOST_PP_TUPLE_ELEM(3, TUPLE) // expands to d in the variadic version

    © Copyright Housemarque Oy 2002 diff --git a/doc/ref/variadic_opt.html b/doc/ref/variadic_opt.html new file mode 100644 index 0000000..d8c425a --- /dev/null +++ b/doc/ref/variadic_opt.html @@ -0,0 +1,50 @@ + + + BOOST_PP_VARIADIC_OPT + + + +
    The BOOST_PP_VARIADIC_OPT macro +determines whether or not the C++20 __VA_OPT__ construct is supported for the compiler's preprocessor being used. +Expands to 1 if the __VA_OPT__ construct is supported, otherwise expands to 0. +
    +

    Usage

    +
    BOOST_PP_VARIADIC_OPT()
    +
    +

    Arguments

    +
    +
    None
    +
    +
    +

    Requirements

    +
    Header:  <boost/preprocessor/variadic/opt.hpp> +
    +

    Sample Code

    +
    +
    +#include <boost/preprocessor/variadic/opt.hpp>
    +#if BOOST_PP_VARIADIC_OPT() +// Preprocessor code which uses __VA_OPT__ +#else +// Preprocessor code which does not use __VA_OPT__ +#endif +
    +
    +or within a macro definition

    +
    +#include <boost/preprocessor/control/iif.hpp>
    +#include <boost/preprocessor/variadic/opt.hpp>
    +#define USE_OPT(...) BOOST_PP_IIF(BOOST_PP_VARIADIC_OPT(),MACRO_USING_OPT,MACRO_NOT_USING_OPT)(__VA_ARGS__) +#define MACRO_USING_OPT(...) __VA_OPT__( preprocessor tokens ) anything +#define MACRO_NOT_USING_OPT(...) anything +
    +
    +
    +
    © Copyright Edward Diener 2019
    +
    +

    Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt +or copy at www.boost.org/LICENSE_1_0.txt)

    +
    + + diff --git a/doc/syntax.html b/doc/syntax.html index abc0b2a..68dd9f6 100644 --- a/doc/syntax.html +++ b/doc/syntax.html @@ -284,6 +284,7 @@
    BOOST_PP_VALUE
    BOOST_PP_VARIADIC_ELEM +
    BOOST_PP_VARIADIC_OPT
    BOOST_PP_VARIADIC_SIZE
    BOOST_PP_VARIADIC_TO_ARRAY
    BOOST_PP_VARIADIC_TO_LIST diff --git a/doc/topics/variadic_macros.html b/doc/topics/variadic_macros.html index 985b9eb..5ecbd18 100644 --- a/doc/topics/variadic_macros.html +++ b/doc/topics/variadic_macros.html @@ -136,6 +136,27 @@ use this variadic data reliably as arguments to other macros, one needs variadic macro support.
    +

    C++20 Support For Variadic Macros

    +
    + In the C++20 specification there is a new construct which can be + used in the expansion of a variadic macro, called __VA_OPT__. This + construct when used in the expansion of a variadic macro is followed + by an opening paranthesis ('('), preprocessor data, and a closing + parenthesis ('}'). When the variadic data passed by the invocation + of a variadic macro is empty, this new construct expands to nothing. + When the variadic data passed by the invocation of a variadic macro + is not empty, this new construct expands to the preprocessor data + between its opening and closing parentheses. +

    + This library offers support for this new C++20 construct by automatically + detecting whether this new construct is supported by the compiler's + preprocessor when using the library. The library macro which detects + support for the __VA_OPT__ construct is called BOOST_PP_VARIADIC_OPT. + This is a function-like macro which takes no parameters and returns + 1 if the compiler is working in C++20 mode and supports the __VA_OPT__ + construct, while otherwise it returns 0. +
    +
    Using a Tuple Instead of an Array
    An array as a preprocessor data type is a two-element tuple where the @@ -257,6 +278,5 @@ (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)

    - - - \ No newline at end of file + + \ No newline at end of file diff --git a/include/boost/preprocessor/array/detail/get_data.hpp b/include/boost/preprocessor/array/detail/get_data.hpp index 15ae740..9d990ba 100644 --- a/include/boost/preprocessor/array/detail/get_data.hpp +++ b/include/boost/preprocessor/array/detail/get_data.hpp @@ -23,33 +23,33 @@ # define BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE(size, data) # if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400) -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) BOOST_PP_TUPLE_REM(size) data -# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) BOOST_PP_TUPLE_REM_CAT(size) data -# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_IS_1(size), \ - BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \ - BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \ - ) \ - (size,data) \ +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) BOOST_PP_TUPLE_REM(size) data +# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) BOOST_PP_TUPLE_REM_CAT(size) data +# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_IS_1(size), \ + BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \ + BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \ + ) \ + (size,data) \ /**/ # else -# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data +# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data # endif # else -# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data +# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data # endif # define BOOST_PP_ARRAY_DETAIL_GET_DATA(size, data) \ - BOOST_PP_IF \ - ( \ - size, \ - BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY, \ - BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE \ - ) \ - (size,data) \ + BOOST_PP_IF \ + ( \ + size, \ + BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY, \ + BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE \ + ) \ + (size,data) \ /**/ # # endif /* BOOST_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP */ diff --git a/include/boost/preprocessor/array/to_list.hpp b/include/boost/preprocessor/array/to_list.hpp index 4cb45b6..10f7a87 100644 --- a/include/boost/preprocessor/array/to_list.hpp +++ b/include/boost/preprocessor/array/to_list.hpp @@ -22,13 +22,13 @@ # /* BOOST_PP_ARRAY_TO_LIST */ # # define BOOST_PP_ARRAY_TO_LIST(array) \ - BOOST_PP_IF \ - ( \ - BOOST_PP_ARRAY_SIZE(array), \ - BOOST_PP_ARRAY_TO_LIST_DO, \ - BOOST_PP_ARRAY_TO_LIST_EMPTY \ - ) \ - (array) \ + BOOST_PP_IF \ + ( \ + BOOST_PP_ARRAY_SIZE(array), \ + BOOST_PP_ARRAY_TO_LIST_DO, \ + BOOST_PP_ARRAY_TO_LIST_EMPTY \ + ) \ + (array) \ /**/ # # define BOOST_PP_ARRAY_TO_LIST_EMPTY(array) BOOST_PP_NIL diff --git a/include/boost/preprocessor/array/to_seq.hpp b/include/boost/preprocessor/array/to_seq.hpp index 7303f34..18285de 100644 --- a/include/boost/preprocessor/array/to_seq.hpp +++ b/include/boost/preprocessor/array/to_seq.hpp @@ -22,13 +22,13 @@ # /* BOOST_PP_ARRAY_TO_SEQ */ # # define BOOST_PP_ARRAY_TO_SEQ(array) \ - BOOST_PP_IF \ - ( \ - BOOST_PP_ARRAY_SIZE(array), \ - BOOST_PP_ARRAY_TO_SEQ_DO, \ - BOOST_PP_ARRAY_TO_SEQ_EMPTY \ - ) \ - (array) \ + BOOST_PP_IF \ + ( \ + BOOST_PP_ARRAY_SIZE(array), \ + BOOST_PP_ARRAY_TO_SEQ_DO, \ + BOOST_PP_ARRAY_TO_SEQ_EMPTY \ + ) \ + (array) \ /**/ # define BOOST_PP_ARRAY_TO_SEQ_EMPTY(array) # diff --git a/include/boost/preprocessor/array/to_tuple.hpp b/include/boost/preprocessor/array/to_tuple.hpp index 0d8defa..62bf709 100644 --- a/include/boost/preprocessor/array/to_tuple.hpp +++ b/include/boost/preprocessor/array/to_tuple.hpp @@ -20,13 +20,13 @@ # /* BOOST_PP_ARRAY_TO_TUPLE */ # # define BOOST_PP_ARRAY_TO_TUPLE(array) \ - BOOST_PP_IF \ - ( \ - BOOST_PP_ARRAY_SIZE(array), \ - BOOST_PP_ARRAY_DATA, \ - BOOST_PP_ARRAY_TO_TUPLE_EMPTY \ - ) \ - (array) \ + BOOST_PP_IF \ + ( \ + BOOST_PP_ARRAY_SIZE(array), \ + BOOST_PP_ARRAY_DATA, \ + BOOST_PP_ARRAY_TO_TUPLE_EMPTY \ + ) \ + (array) \ /**/ # define BOOST_PP_ARRAY_TO_TUPLE_EMPTY(array) # diff --git a/include/boost/preprocessor/config/config.hpp b/include/boost/preprocessor/config/config.hpp index 2c1e72f..7abaaf0 100644 --- a/include/boost/preprocessor/config/config.hpp +++ b/include/boost/preprocessor/config/config.hpp @@ -80,7 +80,7 @@ # if !defined BOOST_PP_VARIADICS # /* variadic support explicitly disabled for all untested compilers */ -# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || (defined(__PGI) && !defined(__EDG__)) +# if defined __GCCXML__ || (defined __CUDACC__ && !(defined(__clang__) && defined(__CUDA__))) || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || (defined __HP_aCC && !defined __EDG__) || defined __MRC__ || defined __SC__ || (defined(__PGI) && !defined(__EDG__)) # define BOOST_PP_VARIADICS 0 # elif defined(_MSC_VER) && defined(__clang__) # define BOOST_PP_VARIADICS 1 diff --git a/include/boost/preprocessor/facilities/detail/is_empty.hpp b/include/boost/preprocessor/facilities/detail/is_empty.hpp index e044970..ce16732 100644 --- a/include/boost/preprocessor/facilities/detail/is_empty.hpp +++ b/include/boost/preprocessor/facilities/detail/is_empty.hpp @@ -31,8 +31,8 @@ #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(param) \ - BOOST_PP_IS_BEGIN_PARENS \ - ( \ + BOOST_PP_IS_BEGIN_PARENS \ + ( \ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \ ) \ /**/ @@ -40,7 +40,7 @@ #else #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(...) \ - BOOST_PP_IS_BEGIN_PARENS \ + BOOST_PP_IS_BEGIN_PARENS \ ( \ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \ ) \ diff --git a/include/boost/preprocessor/facilities/is_empty_variadic.hpp b/include/boost/preprocessor/facilities/is_empty_variadic.hpp index eee4062..4beb3c9 100644 --- a/include/boost/preprocessor/facilities/is_empty_variadic.hpp +++ b/include/boost/preprocessor/facilities/is_empty_variadic.hpp @@ -1,6 +1,6 @@ # /* ************************************************************************** # * * -# * (C) Copyright Edward Diener 2014. +# * (C) Copyright Edward Diener 2014,2019. # * 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) @@ -37,7 +37,34 @@ /**/ #define BOOST_PP_IS_EMPTY_ZERO(param) 0 # else +# if defined(__cplusplus) && __cplusplus > 201703L +# include #define BOOST_PP_IS_EMPTY(...) \ + BOOST_PP_DETAIL_IS_EMPTY_IIF \ + ( \ + BOOST_PP_VARIADIC_OPT() \ + ) \ + ( \ + BOOST_PP_IS_EMPTY_OPT, \ + BOOST_PP_IS_EMPTY_NO_OPT \ + ) \ + (__VA_ARGS__) \ +/**/ +#define BOOST_PP_IS_EMPTY_FUNCTION2(...) \ + __VA_OPT__(0,) 1 \ +/**/ +#define BOOST_PP_IS_EMPTY_FUNCTION(...) \ + BOOST_PP_IS_EMPTY_FUNCTION2(__VA_ARGS__) \ +/**/ +#define BOOST_PP_IS_EMPTY_OPT(...) \ + BOOST_PP_VARIADIC_OPT_ELEM0(BOOST_PP_IS_EMPTY_FUNCTION(__VA_ARGS__),) \ +/**/ +# else +#define BOOST_PP_IS_EMPTY(...) \ + BOOST_PP_IS_EMPTY_NO_OPT(__VA_ARGS__) \ +/**/ +# endif /* defined(__cplusplus) && __cplusplus > 201703L */ +#define BOOST_PP_IS_EMPTY_NO_OPT(...) \ BOOST_PP_DETAIL_IS_EMPTY_IIF \ ( \ BOOST_PP_IS_BEGIN_PARENS \ diff --git a/include/boost/preprocessor/list/to_array.hpp b/include/boost/preprocessor/list/to_array.hpp index 20829b9..c0f8f33 100644 --- a/include/boost/preprocessor/list/to_array.hpp +++ b/include/boost/preprocessor/list/to_array.hpp @@ -28,13 +28,13 @@ # # if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400) # define BOOST_PP_LIST_TO_ARRAY(list) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_LIST_IS_NIL(list), \ - BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY, \ - BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO \ - ) \ - (list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY, \ + BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO \ + ) \ + (list) \ /**/ # define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY(list) (0,()) # define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO(list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE, list) @@ -46,7 +46,7 @@ # define BOOST_PP_LIST_TO_ARRAY_I(w, list) \ BOOST_PP_LIST_TO_ARRAY_II(((BOOST_PP_TUPLE_REM_CTOR( \ 3, \ - w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \ + w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \ )))) \ /**/ # define BOOST_PP_LIST_TO_ARRAY_II(p) BOOST_PP_LIST_TO_ARRAY_II_B(p) @@ -56,7 +56,7 @@ # define BOOST_PP_LIST_TO_ARRAY_I(w, list) \ BOOST_PP_LIST_TO_ARRAY_II(BOOST_PP_TUPLE_REM_CTOR( \ 3, \ - w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \ + w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \ )) \ /**/ # define BOOST_PP_LIST_TO_ARRAY_II(im) BOOST_PP_LIST_TO_ARRAY_III(im) @@ -138,13 +138,13 @@ # # if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400) # define BOOST_PP_LIST_TO_ARRAY_D(d, list) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_LIST_IS_NIL(list), \ - BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY, \ - BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO \ - ) \ - (d, list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY, \ + BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO \ + ) \ + (d, list) \ /**/ # define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY(d, list) (0,()) # define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO(d, list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE_ ## d, list) diff --git a/include/boost/preprocessor/list/to_tuple.hpp b/include/boost/preprocessor/list/to_tuple.hpp index c7b3da8..7af74a2 100644 --- a/include/boost/preprocessor/list/to_tuple.hpp +++ b/include/boost/preprocessor/list/to_tuple.hpp @@ -21,13 +21,13 @@ # /* BOOST_PP_LIST_TO_TUPLE */ # # define BOOST_PP_LIST_TO_TUPLE(list) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_LIST_IS_NIL(list), \ - BOOST_PP_LIST_TO_TUPLE_EMPTY, \ - BOOST_PP_LIST_TO_TUPLE_DO \ - ) \ - (list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_TUPLE_EMPTY, \ + BOOST_PP_LIST_TO_TUPLE_DO \ + ) \ + (list) \ /**/ # define BOOST_PP_LIST_TO_TUPLE_EMPTY(list) # @@ -41,13 +41,13 @@ # /* BOOST_PP_LIST_TO_TUPLE_R */ # # define BOOST_PP_LIST_TO_TUPLE_R(r, list) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_LIST_IS_NIL(list), \ - BOOST_PP_LIST_TO_TUPLE_R_EMPTY, \ - BOOST_PP_LIST_TO_TUPLE_R_DO \ - ) \ - (r, list) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_LIST_IS_NIL(list), \ + BOOST_PP_LIST_TO_TUPLE_R_EMPTY, \ + BOOST_PP_LIST_TO_TUPLE_R_DO \ + ) \ + (r, list) \ /**/ # define BOOST_PP_LIST_TO_TUPLE_R_EMPTY(r,list) # diff --git a/include/boost/preprocessor/repetition/for.hpp b/include/boost/preprocessor/repetition/for.hpp index c38946b..3c5048a 100644 --- a/include/boost/preprocessor/repetition/for.hpp +++ b/include/boost/preprocessor/repetition/for.hpp @@ -52,13 +52,13 @@ # define BOOST_PP_FOR_257_ERROR() BOOST_PP_ERROR(0x0002) # define BOOST_PP_FOR_257(s, p, o, m) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_FOR_257_PR(s,p), \ - BOOST_PP_FOR_257_ERROR, \ - BOOST_PP_EMPTY \ - ) \ - () \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_FOR_257_PR(s,p), \ + BOOST_PP_FOR_257_ERROR, \ + BOOST_PP_EMPTY \ + ) \ + () \ /**/ // # define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002) # diff --git a/include/boost/preprocessor/seq/detail/binary_transform.hpp b/include/boost/preprocessor/seq/detail/binary_transform.hpp index 08b5f9d..2a118da 100644 --- a/include/boost/preprocessor/seq/detail/binary_transform.hpp +++ b/include/boost/preprocessor/seq/detail/binary_transform.hpp @@ -30,13 +30,13 @@ # endif # if BOOST_PP_VARIADICS # if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_SEQ_BINARY_TRANSFORM_REM(data) data +# define BOOST_PP_SEQ_BINARY_TRANSFORM_REM(data) data # define BOOST_PP_SEQ_BINARY_TRANSFORM_A(...) (BOOST_PP_SEQ_BINARY_TRANSFORM_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_B # define BOOST_PP_SEQ_BINARY_TRANSFORM_B(...) (BOOST_PP_SEQ_BINARY_TRANSFORM_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_A -# else +# else # define BOOST_PP_SEQ_BINARY_TRANSFORM_A(...) (BOOST_PP_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_B # define BOOST_PP_SEQ_BINARY_TRANSFORM_B(...) (BOOST_PP_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_A -# endif +# endif # else # define BOOST_PP_SEQ_BINARY_TRANSFORM_A(e) (BOOST_PP_REM, e)() BOOST_PP_SEQ_BINARY_TRANSFORM_B # define BOOST_PP_SEQ_BINARY_TRANSFORM_B(e) (BOOST_PP_REM, e)() BOOST_PP_SEQ_BINARY_TRANSFORM_A diff --git a/include/boost/preprocessor/seq/detail/is_empty.hpp b/include/boost/preprocessor/seq/detail/is_empty.hpp index 1a80a2f..14461ba 100644 --- a/include/boost/preprocessor/seq/detail/is_empty.hpp +++ b/include/boost/preprocessor/seq/detail/is_empty.hpp @@ -21,29 +21,29 @@ /* An empty seq is one that is just BOOST_PP_SEQ_NIL */ # # define BOOST_PP_SEQ_DETAIL_IS_EMPTY(seq) \ - BOOST_PP_COMPL \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ - ) \ + BOOST_PP_COMPL \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ + ) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) \ - BOOST_PP_COMPL \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ - ) \ + BOOST_PP_COMPL \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ + ) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ - BOOST_PP_BOOL(size) \ + BOOST_PP_BOOL(size) \ /**/ # # define BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq) \ - BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \ /**/ # # endif diff --git a/include/boost/preprocessor/seq/for_each.hpp b/include/boost/preprocessor/seq/for_each.hpp index 3f9c0d7..00a83d4 100644 --- a/include/boost/preprocessor/seq/for_each.hpp +++ b/include/boost/preprocessor/seq/for_each.hpp @@ -36,13 +36,13 @@ # define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY(macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC, \ - BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY \ - ) \ - (macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC, \ + BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY \ + ) \ + (macro, data, seq) \ /**/ # # define BOOST_PP_SEQ_FOR_EACH_P(r, x) BOOST_PP_TUPLE_ELEM(4, 3, x) @@ -54,21 +54,21 @@ # endif # # define BOOST_PP_SEQ_FOR_EACH_O_I(macro, data, seq, sz) \ - BOOST_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, BOOST_PP_DEC(sz)) \ + BOOST_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, BOOST_PP_DEC(sz)) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, sz) \ - ( \ - macro, \ - data, \ - BOOST_PP_IF \ - ( \ - sz, \ - BOOST_PP_SEQ_FOR_EACH_O_I_TAIL, \ - BOOST_PP_SEQ_FOR_EACH_O_I_NIL \ - ) \ - (seq), \ - sz \ - ) \ + ( \ + macro, \ + data, \ + BOOST_PP_IF \ + ( \ + sz, \ + BOOST_PP_SEQ_FOR_EACH_O_I_TAIL, \ + BOOST_PP_SEQ_FOR_EACH_O_I_NIL \ + ) \ + (seq), \ + sz \ + ) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq) # define BOOST_PP_SEQ_FOR_EACH_O_I_NIL(seq) BOOST_PP_NIL @@ -95,13 +95,13 @@ # define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R(r, macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R, \ - BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R \ - ) \ - (r, macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R, \ + BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R \ + ) \ + (r, macro, data, seq) \ /**/ # # endif diff --git a/include/boost/preprocessor/seq/for_each_i.hpp b/include/boost/preprocessor/seq/for_each_i.hpp index 81028d7..d29d4c1 100644 --- a/include/boost/preprocessor/seq/for_each_i.hpp +++ b/include/boost/preprocessor/seq/for_each_i.hpp @@ -37,13 +37,13 @@ # define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ - BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \ - ) \ - (macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ + BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \ + ) \ + (macro, data, seq) \ /**/ # # define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_TUPLE_ELEM(5, 4, x) @@ -55,22 +55,22 @@ # endif # # define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i, sz) \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, BOOST_PP_DEC(sz)) \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, BOOST_PP_DEC(sz)) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, sz) \ - ( \ - macro, \ - data, \ - BOOST_PP_IF \ - ( \ - sz, \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL, \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL \ - ) \ - (seq), \ - BOOST_PP_INC(i), \ - sz \ - ) \ + ( \ + macro, \ + data, \ + BOOST_PP_IF \ + ( \ + sz, \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL, \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL \ + ) \ + (seq), \ + BOOST_PP_INC(i), \ + sz \ + ) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq) # define BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) BOOST_PP_NIL @@ -97,13 +97,13 @@ # define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r, macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \ - BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \ - ) \ - (r, macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \ + BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \ + ) \ + (r, macro, data, seq) \ /**/ # # endif diff --git a/include/boost/preprocessor/seq/replace.hpp b/include/boost/preprocessor/seq/replace.hpp index 0cf6b77..f8b5c10 100644 --- a/include/boost/preprocessor/seq/replace.hpp +++ b/include/boost/preprocessor/seq/replace.hpp @@ -33,13 +33,13 @@ # define BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY(seq, i) # define BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID(seq, i) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq) # define BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_EQUAL(i,BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))), \ - BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \ - BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID \ - ) \ - (seq, i) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_EQUAL(i,BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))), \ + BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \ + BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID \ + ) \ + (seq, i) \ /**/ # # endif diff --git a/include/boost/preprocessor/seq/rest_n.hpp b/include/boost/preprocessor/seq/rest_n.hpp index 4aefba4..cac52cf 100644 --- a/include/boost/preprocessor/seq/rest_n.hpp +++ b/include/boost/preprocessor/seq/rest_n.hpp @@ -32,15 +32,15 @@ # endif # # define BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, size) \ - BOOST_PP_EXPR_IIF \ - ( \ - BOOST_PP_BITAND \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \ - BOOST_PP_NOT_EQUAL(n,size) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), BOOST_PP_IDENTITY( (nil) seq )))() \ - ) \ + BOOST_PP_EXPR_IIF \ + ( \ + BOOST_PP_BITAND \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \ + BOOST_PP_NOT_EQUAL(n,size) \ + ), \ + BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), BOOST_PP_IDENTITY( (nil) seq )))() \ + ) \ /**/ # # endif diff --git a/include/boost/preprocessor/tuple/detail/is_single_return.hpp b/include/boost/preprocessor/tuple/detail/is_single_return.hpp index 02a4fb2..bcdb544 100644 --- a/include/boost/preprocessor/tuple/detail/is_single_return.hpp +++ b/include/boost/preprocessor/tuple/detail/is_single_return.hpp @@ -20,9 +20,9 @@ # include # include # include -# define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \ - BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \ - /**/ +# define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \ + BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \ + /**/ # endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */ # # endif /* BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP */ diff --git a/include/boost/preprocessor/tuple/elem.hpp b/include/boost/preprocessor/tuple/elem.hpp index 88044d3..148e6bd 100644 --- a/include/boost/preprocessor/tuple/elem.hpp +++ b/include/boost/preprocessor/tuple/elem.hpp @@ -33,12 +33,12 @@ else use BOOST_PP_REM. This fixes a VC++ problem with an empty tuple and BOOST_PP_TUPLE_ELEM functionality. See tuple_elem_bug_test.cxx. */ -# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) \ - BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)) \ - /**/ +# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) \ + BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)) \ + /**/ # else # define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple) +# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple) # endif # define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple) # else diff --git a/include/boost/preprocessor/tuple/insert.hpp b/include/boost/preprocessor/tuple/insert.hpp index ce4544f..56911b1 100644 --- a/include/boost/preprocessor/tuple/insert.hpp +++ b/include/boost/preprocessor/tuple/insert.hpp @@ -23,13 +23,13 @@ # /* BOOST_PP_TUPLE_INSERT */ # # define BOOST_PP_TUPLE_INSERT(tuple, i, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ /**/ # # /* BOOST_PP_TUPLE_INSERT_D */ # # define BOOST_PP_TUPLE_INSERT_D(d, tuple, i, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ /**/ # # endif // BOOST_PP_VARIADICS diff --git a/include/boost/preprocessor/tuple/pop_back.hpp b/include/boost/preprocessor/tuple/pop_back.hpp index 3ac414b..1aa91c1 100644 --- a/include/boost/preprocessor/tuple/pop_back.hpp +++ b/include/boost/preprocessor/tuple/pop_back.hpp @@ -26,17 +26,17 @@ # /* BOOST_PP_TUPLE_POP_BACK */ # # define BOOST_PP_TUPLE_POP_BACK(tuple) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ - BOOST_PP_TUPLE_POP_BACK_EXEC, \ - BOOST_PP_TUPLE_POP_BACK_RETURN \ - ) \ - (tuple) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ + BOOST_PP_TUPLE_POP_BACK_EXEC, \ + BOOST_PP_TUPLE_POP_BACK_RETURN \ + ) \ + (tuple) \ /**/ # # define BOOST_PP_TUPLE_POP_BACK_EXEC(tuple) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ /**/ # # define BOOST_PP_TUPLE_POP_BACK_RETURN(tuple) tuple @@ -44,17 +44,17 @@ # /* BOOST_PP_TUPLE_POP_BACK_Z */ # # define BOOST_PP_TUPLE_POP_BACK_Z(z, tuple) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ - BOOST_PP_TUPLE_POP_BACK_Z_EXEC, \ - BOOST_PP_TUPLE_POP_BACK_Z_RETURN \ - ) \ - (z, tuple) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ + BOOST_PP_TUPLE_POP_BACK_Z_EXEC, \ + BOOST_PP_TUPLE_POP_BACK_Z_RETURN \ + ) \ + (z, tuple) \ /**/ # # define BOOST_PP_TUPLE_POP_BACK_Z_EXEC(z, tuple) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ /**/ # # define BOOST_PP_TUPLE_POP_BACK_Z_RETURN(z, tuple) tuple diff --git a/include/boost/preprocessor/tuple/pop_front.hpp b/include/boost/preprocessor/tuple/pop_front.hpp index fafaa77..53b50ad 100644 --- a/include/boost/preprocessor/tuple/pop_front.hpp +++ b/include/boost/preprocessor/tuple/pop_front.hpp @@ -27,17 +27,17 @@ # /* BOOST_PP_TUPLE_POP_FRONT */ # # define BOOST_PP_TUPLE_POP_FRONT(tuple) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ - BOOST_PP_TUPLE_POP_FRONT_EXEC, \ - BOOST_PP_TUPLE_POP_FRONT_RETURN \ - ) \ - (tuple) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ + BOOST_PP_TUPLE_POP_FRONT_EXEC, \ + BOOST_PP_TUPLE_POP_FRONT_RETURN \ + ) \ + (tuple) \ /**/ # # define BOOST_PP_TUPLE_POP_FRONT_EXEC(tuple) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ /**/ # # define BOOST_PP_TUPLE_POP_FRONT_RETURN(tuple) tuple @@ -45,17 +45,17 @@ # /* BOOST_PP_TUPLE_POP_FRONT_Z */ # # define BOOST_PP_TUPLE_POP_FRONT_Z(z, tuple) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ - BOOST_PP_TUPLE_POP_FRONT_Z_EXEC, \ - BOOST_PP_TUPLE_POP_FRONT_Z_RETURN \ - ) \ - (z, tuple) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ + BOOST_PP_TUPLE_POP_FRONT_Z_EXEC, \ + BOOST_PP_TUPLE_POP_FRONT_Z_RETURN \ + ) \ + (z, tuple) \ /**/ # # define BOOST_PP_TUPLE_POP_FRONT_Z_EXEC(z, tuple) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \ /**/ # # define BOOST_PP_TUPLE_POP_FRONT_Z_RETURN(z, tuple) tuple diff --git a/include/boost/preprocessor/tuple/push_back.hpp b/include/boost/preprocessor/tuple/push_back.hpp index 2ae8f63..482d265 100644 --- a/include/boost/preprocessor/tuple/push_back.hpp +++ b/include/boost/preprocessor/tuple/push_back.hpp @@ -23,7 +23,7 @@ # /* BOOST_PP_TUPLE_PUSH_BACK */ # # define BOOST_PP_TUPLE_PUSH_BACK(tuple, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ /**/ # # endif // BOOST_PP_VARIADICS diff --git a/include/boost/preprocessor/tuple/push_front.hpp b/include/boost/preprocessor/tuple/push_front.hpp index 81fea85..8bbfa79 100644 --- a/include/boost/preprocessor/tuple/push_front.hpp +++ b/include/boost/preprocessor/tuple/push_front.hpp @@ -24,7 +24,7 @@ # /* BOOST_PP_TUPLE_PUSH_FRONT */ # # define BOOST_PP_TUPLE_PUSH_FRONT(tuple, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \ /**/ # # endif // BOOST_PP_VARIADICS diff --git a/include/boost/preprocessor/tuple/rem.hpp b/include/boost/preprocessor/tuple/rem.hpp index c934447..e99008d 100644 --- a/include/boost/preprocessor/tuple/rem.hpp +++ b/include/boost/preprocessor/tuple/rem.hpp @@ -22,10 +22,10 @@ # /* BOOST_PP_REM */ # # if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC - /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */ -# define BOOST_PP_REM_CAT(...) BOOST_PP_CAT(__VA_ARGS__,) -# endif +# if BOOST_PP_VARIADICS_MSVC + /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */ +# define BOOST_PP_REM_CAT(...) BOOST_PP_CAT(__VA_ARGS__,) +# endif # define BOOST_PP_REM(...) __VA_ARGS__ # else # define BOOST_PP_REM(x) x @@ -37,10 +37,10 @@ VC++8.0 cannot handle the variadic version of BOOST_PP_TUPLE_REM(size) */ # if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400) -# if BOOST_PP_VARIADICS_MSVC - /* To be used internally when the size could be 0 ( or 1 ) */ -# define BOOST_PP_TUPLE_REM_CAT(size) BOOST_PP_REM_CAT -# endif +# if BOOST_PP_VARIADICS_MSVC + /* To be used internally when the size could be 0 ( or 1 ) */ +# define BOOST_PP_TUPLE_REM_CAT(size) BOOST_PP_REM_CAT +# endif # define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM # else # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() @@ -124,10 +124,10 @@ # define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__)) # define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args) # define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple) +# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple) # else # define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple +# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple # endif # define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) # else diff --git a/include/boost/preprocessor/tuple/remove.hpp b/include/boost/preprocessor/tuple/remove.hpp index 25fa376..5aefa57 100644 --- a/include/boost/preprocessor/tuple/remove.hpp +++ b/include/boost/preprocessor/tuple/remove.hpp @@ -26,17 +26,17 @@ # /* BOOST_PP_TUPLE_REMOVE */ # # define BOOST_PP_TUPLE_REMOVE(tuple, i) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ - BOOST_PP_TUPLE_REMOVE_EXEC, \ - BOOST_PP_TUPLE_REMOVE_RETURN \ - ) \ - (tuple, i) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \ + BOOST_PP_TUPLE_REMOVE_EXEC, \ + BOOST_PP_TUPLE_REMOVE_RETURN \ + ) \ + (tuple, i) \ /**/ # # define BOOST_PP_TUPLE_REMOVE_EXEC(tuple, i) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \ /**/ # # define BOOST_PP_TUPLE_REMOVE_RETURN(tuple, i) tuple @@ -44,17 +44,17 @@ # /* BOOST_PP_TUPLE_REMOVE_D */ # # define BOOST_PP_TUPLE_REMOVE_D(d, tuple, i) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_GREATER_D(d, BOOST_PP_TUPLE_SIZE(tuple), 1), \ - BOOST_PP_TUPLE_REMOVE_D_EXEC, \ - BOOST_PP_TUPLE_REMOVE_D_RETURN \ - ) \ - (d, tuple, i) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_GREATER_D(d, BOOST_PP_TUPLE_SIZE(tuple), 1), \ + BOOST_PP_TUPLE_REMOVE_D_EXEC, \ + BOOST_PP_TUPLE_REMOVE_D_RETURN \ + ) \ + (d, tuple, i) \ /**/ # # define BOOST_PP_TUPLE_REMOVE_D_EXEC(d, tuple, i) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \ /**/ # # define BOOST_PP_TUPLE_REMOVE_D_RETURN(d, tuple, i) tuple diff --git a/include/boost/preprocessor/tuple/replace.hpp b/include/boost/preprocessor/tuple/replace.hpp index 320ef9e..80f65b5 100644 --- a/include/boost/preprocessor/tuple/replace.hpp +++ b/include/boost/preprocessor/tuple/replace.hpp @@ -23,13 +23,13 @@ # /* BOOST_PP_TUPLE_REPLACE */ # # define BOOST_PP_TUPLE_REPLACE(tuple, i, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ /**/ # # /* BOOST_PP_TUPLE_REPLACE_D */ # # define BOOST_PP_TUPLE_REPLACE_D(d, tuple, i, elem) \ - BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ + BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \ /**/ # # endif // BOOST_PP_VARIADICS diff --git a/include/boost/preprocessor/tuple/reverse.hpp b/include/boost/preprocessor/tuple/reverse.hpp index 489c442..26a52d9 100644 --- a/include/boost/preprocessor/tuple/reverse.hpp +++ b/include/boost/preprocessor/tuple/reverse.hpp @@ -28,10 +28,10 @@ # define BOOST_PP_TUPLE_REVERSE(...) BOOST_PP_TUPLE_REVERSE_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REVERSE_O_, __VA_ARGS__), (__VA_ARGS__)) # define BOOST_PP_TUPLE_REVERSE_I(m, args) BOOST_PP_TUPLE_REVERSE_II(m, args) # define BOOST_PP_TUPLE_REVERSE_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_TUPLE_SIZE(tuple)) tuple +# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_TUPLE_SIZE(tuple)) tuple # else # define BOOST_PP_TUPLE_REVERSE(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REVERSE_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_VARIADIC_SIZE tuple) tuple +# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_VARIADIC_SIZE tuple) tuple # endif # define BOOST_PP_TUPLE_REVERSE_O_2(size, tuple) BOOST_PP_TUPLE_REVERSE_O_1(tuple) # else diff --git a/include/boost/preprocessor/tuple/to_list.hpp b/include/boost/preprocessor/tuple/to_list.hpp index da7828f..25d9b09 100644 --- a/include/boost/preprocessor/tuple/to_list.hpp +++ b/include/boost/preprocessor/tuple/to_list.hpp @@ -28,10 +28,10 @@ # define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__)) # define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args) # define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_TUPLE_SIZE(tuple)) tuple +# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_TUPLE_SIZE(tuple)) tuple # else # define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple +# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple # endif # define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple) # else diff --git a/include/boost/preprocessor/tuple/to_seq.hpp b/include/boost/preprocessor/tuple/to_seq.hpp index a53f5a0..028ee42 100644 --- a/include/boost/preprocessor/tuple/to_seq.hpp +++ b/include/boost/preprocessor/tuple/to_seq.hpp @@ -26,10 +26,10 @@ # define BOOST_PP_TUPLE_TO_SEQ(...) BOOST_PP_TUPLE_TO_SEQ_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__), (__VA_ARGS__)) # define BOOST_PP_TUPLE_TO_SEQ_I(m, args) BOOST_PP_TUPLE_TO_SEQ_II(m, args) # define BOOST_PP_TUPLE_TO_SEQ_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_TUPLE_SIZE(tuple)) tuple +# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_TUPLE_SIZE(tuple)) tuple # else # define BOOST_PP_TUPLE_TO_SEQ(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_VARIADIC_SIZE tuple) tuple +# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_VARIADIC_SIZE tuple) tuple # endif # define BOOST_PP_TUPLE_TO_SEQ_O_2(size, tuple) BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) # else diff --git a/include/boost/preprocessor/variadic.hpp b/include/boost/preprocessor/variadic.hpp index a28e026..c2c37f2 100644 --- a/include/boost/preprocessor/variadic.hpp +++ b/include/boost/preprocessor/variadic.hpp @@ -14,6 +14,7 @@ # define BOOST_PREPROCESSOR_VARIADIC_HPP # # include +# include # include # include # include diff --git a/include/boost/preprocessor/variadic/detail/is_single_return.hpp b/include/boost/preprocessor/variadic/detail/is_single_return.hpp index 5c95029..ae8cb4d 100644 --- a/include/boost/preprocessor/variadic/detail/is_single_return.hpp +++ b/include/boost/preprocessor/variadic/detail/is_single_return.hpp @@ -20,9 +20,9 @@ # include # include # include -# define BOOST_PP_VARIADIC_IS_SINGLE_RETURN(sr,nsr,...) \ - BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)),sr,nsr) \ - /**/ +# define BOOST_PP_VARIADIC_IS_SINGLE_RETURN(sr,nsr,...) \ + BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)),sr,nsr) \ + /**/ # endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */ # # endif /* BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP */ diff --git a/include/boost/preprocessor/variadic/detail/opt.hpp b/include/boost/preprocessor/variadic/detail/opt.hpp new file mode 100644 index 0000000..e5798ee --- /dev/null +++ b/include/boost/preprocessor/variadic/detail/opt.hpp @@ -0,0 +1,30 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. * +# * 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_VARIADIC_DETAIL_OPT_HPP +# define BOOST_PREPROCESSOR_VARIADIC_DETAIL_OPT_HPP +# +# include +# +# if BOOST_PP_VARIADICS && defined(__cplusplus) && __cplusplus > 201703L +# +# define BOOST_PP_VARIADIC_OPT_FUNCTION(...) \ + __VA_OPT__(,) , 1, 0 \ +/**/ +# +# define BOOST_PP_VARIADIC_OPT_ELEM0(e0, ...) BOOST_PP_VARIADIC_OPT_ELEM_0(e0,__VA_ARGS__) +# define BOOST_PP_VARIADIC_OPT_ELEM2(e0, ...) BOOST_PP_VARIADIC_OPT_ELEM_2(e0,__VA_ARGS__) +# define BOOST_PP_VARIADIC_OPT_ELEM_0(e0, ...) e0 +# define BOOST_PP_VARIADIC_OPT_ELEM_2(e0, e1, e2, ...) e2 +# +# endif +# +# endif diff --git a/include/boost/preprocessor/variadic/opt.hpp b/include/boost/preprocessor/variadic/opt.hpp new file mode 100644 index 0000000..09d37c4 --- /dev/null +++ b/include/boost/preprocessor/variadic/opt.hpp @@ -0,0 +1,28 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. * +# * 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_VARIADIC_OPT_HPP +# define BOOST_PREPROCESSOR_VARIADIC_OPT_HPP +# +# include +# +# /* BOOST_PP_VARIADIC_OPT */ +# +# if BOOST_PP_VARIADICS && defined(__cplusplus) && __cplusplus > 201703L +# include +# define BOOST_PP_VARIADIC_OPT() \ + BOOST_PP_VARIADIC_OPT_ELEM2(BOOST_PP_VARIADIC_OPT_FUNCTION(?),) \ +/**/ +# else +# define BOOST_PP_VARIADIC_OPT() 0 +# endif +# +# endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index e12d73a..51b6b1c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -3,6 +3,7 @@ #~ (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) import testing ; +import cast ; project preprocessor_tests : requirements on gcc-4.3.0:all @@ -247,3 +248,15 @@ alias preprocessor_config : [ run config_info.cpp ] ; + +alias test_clang_cuda + : + [ compile [ cast _ cpp : clang_cuda.cu ] + : -nocudalib + -nocudainc + "-x cuda" + : clang_cuda_cu + ] + ; + +explicit test_clang_cuda ; diff --git a/test/clang_cuda.cu b/test/clang_cuda.cu new file mode 100644 index 0000000..e13d656 --- /dev/null +++ b/test/clang_cuda.cu @@ -0,0 +1,26 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. +# * 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. */ +# +# include + +#if defined(__clang__) && defined(__CUDACC__) && defined(__CUDA__) + +BEGIN BOOST_PP_VARIADICS == 1 END + +#else + +BEGIN 0 == 1 END + +#endif + +int main(void) { + return 0; +} diff --git a/test/config_info.cpp b/test/config_info.cpp index ce92887..23de991 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1,7 +1,19 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2014,2019. +# * 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. */ +# #include #include #include #include +#include static unsigned int indent = 4; static unsigned int width = 40; @@ -82,6 +94,7 @@ void print_macros() PRINT_MACRO(BOOST_PP_CONFIG_FLAGS()); PRINT_MACRO(BOOST_PP_VARIADICS); PRINT_MACRO(BOOST_PP_VARIADICS_MSVC); + PRINT_MACRO(BOOST_PP_VARIADIC_OPT()); } int main() diff --git a/test/isempty.cxx b/test/isempty.cxx index 56bc81b..5fc8838 100644 --- a/test/isempty.cxx +++ b/test/isempty.cxx @@ -38,7 +38,20 @@ #if BOOST_PP_VARIADICS -#if BOOST_PP_VARIADICS_MSVC /* Testing the VC++ variadic version */ +# include + +#if defined(__cplusplus) && __cplusplus > 201703L && BOOST_PP_VARIADIC_OPT() + +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN2) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN3) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN4) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN5) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN10) == 0 END + +#elif BOOST_PP_VARIADICS_MSVC /* Testing the VC++ variadic version */ /* INCORRECT */ diff --git a/test/isempty_variadic_standard_failure.cxx b/test/isempty_variadic_standard_failure.cxx index feee25f..557014f 100644 --- a/test/isempty_variadic_standard_failure.cxx +++ b/test/isempty_variadic_standard_failure.cxx @@ -15,9 +15,19 @@ #if BOOST_PP_VARIADICS && (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()) && !BOOST_PP_VARIADICS_MSVC #define FUNC_GEN8(x,y) (1,2,3) + +#if defined(__cplusplus) && __cplusplus > 201703L +# include + +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == BOOST_PP_VARIADIC_OPT() END + +#else + BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 0 END +#endif + #else BEGIN 1 == 0 END diff --git a/test/isempty_variadic_standard_failure2.cxx b/test/isempty_variadic_standard_failure2.cxx index f51d497..c28bcd0 100644 --- a/test/isempty_variadic_standard_failure2.cxx +++ b/test/isempty_variadic_standard_failure2.cxx @@ -16,8 +16,18 @@ #define FUNC_GEN9(x,y,z) anything +#if defined(__cplusplus) && __cplusplus > 201703L + +# include + +BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == BOOST_PP_VARIADIC_OPT() END + +#else + BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END +#endif + #else BEGIN 1 == 0 END diff --git a/test/seq.cxx b/test/seq.cxx index 0ff7e66..88b2208 100644 --- a/test/seq.cxx +++ b/test/seq.cxx @@ -35,46 +35,46 @@ # define SEQ (4)(1)(5)(2) # define SEQ_100 \ - (1)(2)(3)(4)(5)(6)(7)(8)(9) \ - (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \ - (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \ - (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \ - (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \ - (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \ - (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \ - (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \ - (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \ - (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \ - (100) - + (1)(2)(3)(4)(5)(6)(7)(8)(9) \ + (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \ + (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \ + (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \ + (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \ + (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \ + (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \ + (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \ + (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \ + (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \ + (100) + # define SEQ_255 \ - (1)(2)(3)(4)(5)(6)(7)(8)(9) \ - (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \ - (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \ - (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \ - (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \ - (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \ - (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \ - (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \ - (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \ - (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \ - (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \ - (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \ - (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \ - (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \ - (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \ - (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \ - (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \ - (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \ - (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \ - (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \ - (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \ - (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \ - (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \ - (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \ - (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \ - (250)(251)(252)(253)(254)(255) - + (1)(2)(3)(4)(5)(6)(7)(8)(9) \ + (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \ + (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \ + (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \ + (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \ + (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \ + (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \ + (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \ + (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \ + (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \ + (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \ + (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \ + (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \ + (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \ + (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \ + (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \ + (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \ + (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \ + (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \ + (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \ + (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \ + (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \ + (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \ + (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \ + (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \ + (250)(251)(252)(253)(254)(255) + # define SEQ_256 SEQ_255(256) # define SEQVAR (4,5,8,3,61)(1,0)(5,22,43)(2)(17,45,33) diff --git a/test/test.h b/test/test.h index a5b37d6..d1d60c3 100644 --- a/test/test.h +++ b/test/test.h @@ -14,24 +14,7 @@ # ifndef BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H # define BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H # -# include +# include +# include # -# define BEGIN typedef int BOOST_PP_CAT(test_, __LINE__)[(( -# define END )==1) ? 1 : -1]; - -#if defined(__cplusplus) -#include -#if !defined(_STLP_MSVC) || _STLP_MSVC >= 1300 -namespace std { } -using namespace std; -#endif -#else -#include -#endif - -int main(void) { - printf("pass " __TIME__); - return 0; -} - # endif diff --git a/test/test_macro.h b/test/test_macro.h new file mode 100644 index 0000000..f9fe1f4 --- /dev/null +++ b/test/test_macro.h @@ -0,0 +1,22 @@ +# /* Copyright (C) 2001 +# * Housemarque Oy +# * http://www.housemarque.com +# * +# * 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) +# */ +# +# /* Revised by Paul Mensonides (2002) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_MACRO_H +# define BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_MACRO_H +# +# include +# +# define BEGIN typedef int BOOST_PP_CAT(test_, __LINE__)[(( +# define END )==1) ? 1 : -1]; +# +# endif diff --git a/test/test_main.h b/test/test_main.h new file mode 100644 index 0000000..23797c2 --- /dev/null +++ b/test/test_main.h @@ -0,0 +1,32 @@ +# /* Copyright (C) 2001 +# * Housemarque Oy +# * http://www.housemarque.com +# * +# * 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) +# */ +# +# /* Revised by Paul Mensonides (2002) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_MAIN_H +# define BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_MAIN_H +# +#if defined(__cplusplus) +#include +#if !defined(_STLP_MSVC) || _STLP_MSVC >= 1300 +namespace std { } +using namespace std; +#endif +#else +#include +#endif + +int main(void) { + printf("pass " __TIME__); + return 0; +} + +# endif diff --git a/test/tuple_elem_bug_test.cxx b/test/tuple_elem_bug_test.cxx index 56e36a6..c365609 100644 --- a/test/tuple_elem_bug_test.cxx +++ b/test/tuple_elem_bug_test.cxx @@ -17,21 +17,21 @@ #define TN_GEN_ONE(p) (1) #define TN_GEN_ZERO(p) (0) #define TN_TEST_ONE_MORE(parameter,ens) \ - BOOST_PP_IF \ - ( \ - BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(1,0,ens),0), \ - TN_GEN_ONE, \ - TN_GEN_ZERO \ - ) \ - (parameter) \ + BOOST_PP_IF \ + ( \ + BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(1,0,ens),0), \ + TN_GEN_ONE, \ + TN_GEN_ZERO \ + ) \ + (parameter) \ /**/ #define TN_TEST_ONE(parameter,ens) \ - BOOST_PP_TUPLE_ELEM \ - ( \ - 1, \ - 0, \ - TN_TEST_ONE_MORE(parameter,ens) \ - ) \ + BOOST_PP_TUPLE_ELEM \ + ( \ + 1, \ + 0, \ + TN_TEST_ONE_MORE(parameter,ens) \ + ) \ /**/ BEGIN TN_TEST_ONE(A,(1)) == 1 END