1 | # /* ************************************************************************** |
2 | # * * |
3 | # * (C) Copyright Edward Diener 2014. |
4 | # * Distributed under the Boost Software License, Version 1.0. (See |
5 | # * accompanying file LICENSE_1_0.txt or copy at |
6 | # * http://www.boost.org/LICENSE_1_0.txt) |
7 | # * * |
8 | # ************************************************************************** */ |
9 | # |
10 | # /* See http://www.boost.org for most recent version. */ |
11 | # |
12 | #ifndef BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP |
13 | #define BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP |
14 | |
15 | #include <boost/preprocessor/punctuation/is_begin_parens.hpp> |
16 | |
17 | #if BOOST_PP_VARIADICS_MSVC |
18 | |
19 | # pragma warning(once:4002) |
20 | |
21 | #define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, b) b |
22 | #define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, b) t |
23 | |
24 | #else |
25 | |
26 | #define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__ |
27 | #define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, ...) t |
28 | |
29 | #endif |
30 | |
31 | #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 |
32 | |
33 | #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(param) \ |
34 | BOOST_PP_IS_BEGIN_PARENS \ |
35 | ( \ |
36 | BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \ |
37 | ) \ |
38 | /**/ |
39 | |
40 | #else |
41 | |
42 | #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(...) \ |
43 | BOOST_PP_IS_BEGIN_PARENS \ |
44 | ( \ |
45 | BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \ |
46 | ) \ |
47 | /**/ |
48 | |
49 | #endif |
50 | |
51 | #define BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b |
52 | #define BOOST_PP_DETAIL_IS_EMPTY_IIF(bit) BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(BOOST_PP_DETAIL_IS_EMPTY_IIF_,bit) |
53 | #define BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) () |
54 | |
55 | #endif /* BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP */ |
56 | |