Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:53:38

0001 
0002 //  (C) Copyright Edward Diener 2015
0003 //  Use, modification and distribution are subject to the Boost Software License,
0004 //  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
0005 //  http://www.boost.org/LICENSE_1_0.txt).
0006 
0007 #if !defined(BOOST_VMD_SEQ_REMOVE_HPP)
0008 #define BOOST_VMD_SEQ_REMOVE_HPP
0009 
0010 #include <boost/vmd/detail/setup.hpp>
0011 
0012 #if BOOST_PP_VARIADICS
0013 
0014 #include <boost/preprocessor/comparison/equal.hpp>
0015 #include <boost/preprocessor/control/iif.hpp>
0016 #include <boost/preprocessor/logical/bitand.hpp>
0017 #include <boost/preprocessor/seq/remove.hpp>
0018 #include <boost/preprocessor/seq/size.hpp>
0019 #include <boost/vmd/empty.hpp>
0020 
0021 /*
0022 
0023   The succeeding comments in this file are in doxygen format.
0024 
0025 */
0026 
0027 /** \file
0028 */
0029 
0030 /** \def BOOST_VMD_SEQ_REMOVE(seq,index)
0031 
0032     \brief removes an element from a seq.
0033 
0034     seq = seq from which an element is to be removed. <br/>
0035     index = The zero-based position in seq of the element to be removed.
0036 
0037     If index is greater or equal to the seq size the result is undefined.
0038     If the seq is a single element and the index is 0 the result is an empty seq.
0039     Otherwise the result is a seq after removing the index element.
0040 */
0041 
0042 #define BOOST_VMD_SEQ_REMOVE(seq,index) \
0043     BOOST_PP_IIF \
0044         ( \
0045         BOOST_PP_BITAND \
0046             ( \
0047             BOOST_PP_EQUAL(index,0), \
0048             BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(seq),1) \
0049             ), \
0050         BOOST_VMD_EMPTY, \
0051         BOOST_PP_SEQ_REMOVE \
0052         ) \
0053     (seq,index) \
0054 /**/
0055 
0056 #endif /* BOOST_PP_VARIADICS */
0057 #endif /* BOOST_VMD_SEQ_REMOVE_HPP */