]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/vmd/include/boost/vmd/seq/size.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / vmd / include / boost / vmd / seq / 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_SEQ_SIZE_HPP)
8 #define BOOST_VMD_SEQ_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/seq/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_SEQ_SIZE(seq)
29
30 \brief expands to the size of the seq passed to it.
31
32 seq = seq whose size is to be extracted.
33
34 If the seq is an empty seq its size is 0.
35 Otherwise the result is the number of elements in the seq.
36 */
37
38 #define BOOST_VMD_SEQ_SIZE(seq) \
39 BOOST_VMD_IDENTITY_RESULT \
40 ( \
41 BOOST_PP_IIF \
42 ( \
43 BOOST_VMD_IS_EMPTY(seq), \
44 BOOST_VMD_IDENTITY(0), \
45 BOOST_PP_SEQ_SIZE \
46 ) \
47 (seq) \
48 ) \
49 /**/
50
51 #endif /* BOOST_PP_VARIADICS */
52 #endif /* BOOST_VMD_SEQ_SIZE_HPP */