]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/vmd/include/boost/vmd/detail/is_empty_tuple.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / vmd / include / boost / vmd / detail / is_empty_tuple.hpp
1
2 // (C) Copyright Edward Diener 2011-2015
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt).
6
7 #if !defined(BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_HPP)
8 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_HPP
9
10 #include <boost/preprocessor/comparison/equal.hpp>
11 #include <boost/preprocessor/control/iif.hpp>
12 #include <boost/preprocessor/tuple/elem.hpp>
13 #include <boost/preprocessor/tuple/size.hpp>
14 #include <boost/vmd/identity.hpp>
15 #include <boost/vmd/is_empty.hpp>
16 #include <boost/vmd/is_tuple.hpp>
17
18 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM(tuple) \
19 BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)) \
20 /**/
21
22 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE(tuple) \
23 BOOST_VMD_IDENTITY_RESULT \
24 ( \
25 BOOST_PP_IIF \
26 ( \
27 BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple),1), \
28 BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM, \
29 BOOST_VMD_IDENTITY(0) \
30 ) \
31 (tuple) \
32 ) \
33 /**/
34
35 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE_D(d,tuple) \
36 BOOST_VMD_IDENTITY_RESULT \
37 ( \
38 BOOST_PP_IIF \
39 ( \
40 BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_SIZE(tuple),1), \
41 BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM, \
42 BOOST_VMD_IDENTITY(0) \
43 ) \
44 (tuple) \
45 ) \
46 /**/
47
48 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE(tuple) \
49 BOOST_VMD_IDENTITY_RESULT \
50 ( \
51 BOOST_PP_IIF \
52 ( \
53 BOOST_VMD_IS_TUPLE(tuple), \
54 BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE, \
55 BOOST_VMD_IDENTITY(0) \
56 ) \
57 (tuple) \
58 ) \
59 /**/
60
61 #define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_D(d,tuple) \
62 BOOST_VMD_IDENTITY_RESULT \
63 ( \
64 BOOST_PP_IIF \
65 ( \
66 BOOST_VMD_IS_TUPLE(tuple), \
67 BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE_D, \
68 BOOST_VMD_IDENTITY(0) \
69 ) \
70 (d,tuple) \
71 ) \
72 /**/
73
74 #endif /* BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_HPP */