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_IS_EMPTY_LIST_HPP) 8 #define BOOST_VMD_IS_EMPTY_LIST_HPP 9 10 #include <boost/vmd/detail/setup.hpp> 11 12 #if BOOST_PP_VARIADICS 13 14 #include <boost/vmd/detail/is_list.hpp> 15 16 /* 17 18 The succeeding comments in this file are in doxygen format. 19 20 */ 21 22 /** \file 23 */ 24 25 /** \def BOOST_VMD_IS_EMPTY_LIST(sequence) 26 27 \brief Tests whether a sequence is an empty Boost PP list. 28 29 An empty Boost PP list consists of the single identifier 'BOOST_PP_NIL'. 30 This identifier also serves as a list terminator for a non-empty list. 31 32 sequence = a preprocessor parameter 33 34 returns = 1 if the sequence is an empty Boost PP list, 35 0 if it is not. 36 37 The macro will generate a preprocessing error if the input 38 as an empty list marker, instead of being an identifier, is 39 a preprocessor token which VMD cannot parse, as in the 40 example '&BOOST_PP_NIL'. 41 42 */ 43 44 #define BOOST_VMD_IS_EMPTY_LIST(sequence) \ 45 BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS(sequence) \ 46 /**/ 47 48 /** \def BOOST_VMD_IS_EMPTY_LIST_D(d,sequence) 49 50 \brief Tests whether a sequence is an empty Boost PP list. Re-entrant version. 51 52 An empty Boost PP list consists of the single identifier 'BOOST_PP_NIL'. 53 This identifier also serves as a list terminator for a non-empty list. 54 55 d = The next available BOOST_PP_WHILE iteration <br/> 56 sequence = a preprocessor parameter 57 58 returns = 1 if the sequence is an empty Boost PP list, 59 0 if it is not. 60 61 The macro will generate a preprocessing error if the input 62 as an empty list marker, instead of being an identifier, is 63 a preprocessor token which VMD cannot parse, as in the 64 example '&BOOST_PP_NIL'. 65 66 */ 67 68 #define BOOST_VMD_IS_EMPTY_LIST_D(d,sequence) \ 69 BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS_D(d,sequence) \ 70 /**/ 71 72 #endif /* BOOST_PP_VARIADICS */ 73 #endif /* BOOST_VMD_IS_EMPTY_LIST_HPP */ 74