]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/vmd/include/boost/vmd/seq/remove.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / vmd / include / boost / vmd / seq / remove.hpp
CommitLineData
7c673cae
FG
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_REMOVE_HPP)
8#define BOOST_VMD_SEQ_REMOVE_HPP
9
10#include <boost/vmd/detail/setup.hpp>
11
12#if BOOST_PP_VARIADICS
13
14#include <boost/preprocessor/comparison/equal.hpp>
15#include <boost/preprocessor/control/iif.hpp>
16#include <boost/preprocessor/logical/bitand.hpp>
17#include <boost/preprocessor/seq/remove.hpp>
18#include <boost/preprocessor/seq/size.hpp>
19#include <boost/vmd/empty.hpp>
20
21/*
22
23 The succeeding comments in this file are in doxygen format.
24
25*/
26
27/** \file
28*/
29
30/** \def BOOST_VMD_SEQ_REMOVE(seq,index)
31
32 \brief removes an element from a seq.
33
34 seq = seq from which an element is to be removed.
35 index = The zero-based position in seq of the element to be removed.
36
37 If index is greater or equal to the seq size the result is undefined.
38 If the seq is a single element and the index is 0 the result is an empty seq.
39 Otherwise the result is a seq after removing the index element.
40*/
41
42#define BOOST_VMD_SEQ_REMOVE(seq,index) \
43 BOOST_PP_IIF \
44 ( \
45 BOOST_PP_BITAND \
46 ( \
47 BOOST_PP_EQUAL(index,0), \
48 BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(seq),1) \
49 ), \
50 BOOST_VMD_EMPTY, \
51 BOOST_PP_SEQ_REMOVE \
52 ) \
53 (seq,index) \
54/**/
55
56#endif /* BOOST_PP_VARIADICS */
57#endif /* BOOST_VMD_SEQ_REMOVE_HPP */