]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/vmd/include/boost/vmd/tuple/size.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / vmd / include / boost / vmd / tuple / size.hpp
1
2 // (C) Copyright Edward Diener 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_TUPLE_SIZE_HPP)
8 #define BOOST_VMD_TUPLE_SIZE_HPP
9
10 #include <boost/vmd/detail/setup.hpp>
11
12 #if BOOST_PP_VARIADICS
13
14 #include <boost/preprocessor/control/iif.hpp>
15 #include <boost/preprocessor/tuple/size.hpp>
16 #include <boost/vmd/identity.hpp>
17 #include <boost/vmd/is_empty.hpp>
18
19 /*
20
21 The succeeding comments in this file are in doxygen format.
22
23 */
24
25 /** \file
26 */
27
28 /** \def BOOST_VMD_TUPLE_SIZE(tuple)
29
30 \brief expands to the size of the tuple passed to it.
31
32 tuple = tuple whose size is to be extracted.
33
34 If the tuple is an empty tuple its size is 0.
35 Otherwise the result is the number of elements in the tuple.
36 */
37
38 #define BOOST_VMD_TUPLE_SIZE(tuple) \
39 BOOST_VMD_IDENTITY_RESULT \
40 ( \
41 BOOST_PP_IIF \
42 ( \
43 BOOST_VMD_IS_EMPTY(tuple), \
44 BOOST_VMD_IDENTITY(0), \
45 BOOST_PP_TUPLE_SIZE \
46 ) \
47 (tuple) \
48 ) \
49 /**/
50
51 #endif /* BOOST_PP_VARIADICS */
52 #endif /* BOOST_VMD_TUPLE_SIZE_HPP */