1[/ 2 (C) Copyright Edward Diener 2011-2015 3 Distributed under the Boost Software License, Version 1.0. 4 (See accompanying file LICENSE_1_0.txt or copy at 5 http://www.boost.org/LICENSE_1_0.txt). 6] 7 8[section:vmd_reentrant Boost PP re-entrant versions] 9 10Nearly all macros in VMD have equivalent reentrant versions which are 11meant to be used in a BOOST_PP_WHILE loop. These are versions which have 12an underscore D suffix, take the next available BOOST_PP_WHILE iteration 13as their first parameter, and then have the exact same functionality as 14their unsuffixed equivalents. They can be used in BOOST_PP_WHILE loops 15to provide slightly quicker preprocessing but, as the documentation for 16BOOST_PP_WHILE and BOOST_PP_WHILE_##d explain, they do not have to be used. 17 18These macros are: 19 20Arrays 21 22* BOOST_VMD_IS_ARRAY_D 23* BOOST_VMD_IS_EMPTY_ARRAY_D 24* BOOST_VMD_ASSERT_IS_ARRAY_D 25 26Identifiers 27 28* BOOST_VMD_IS_IDENTIFIER_D 29* BOOST_VMD_ASSERT_IS_IDENTIFIER_D 30 31Lists 32 33* BOOST_VMD_IS_LIST_D 34* BOOST_VMD_IS_EMPTY_LIST_D 35* BOOST_VMD_ASSERT_IS_LIST_D 36 37Sequences 38 39* BOOST_VMD_ELEM_D 40* BOOST_VMD_ENUM_D 41* BOOST_VMD_EQUAL_D 42* BOOST_VMD_GET_TYPE_D 43* BOOST_VMD_IS_MULTI_D 44* BOOST_VMD_IS_UNARY_D 45* BOOST_VMD_NOT_EQUAL_D 46* BOOST_VMD_SIZE_D 47* BOOST_VMD_TO_ARRAY_D 48* BOOST_VMD_TO_LIST_D 49* BOOST_VMD_TO_SEQ_D 50* BOOST_VMD_TO_TUPLE_D 51 52Seqs 53 54* BOOST_VMD_IS_SEQ_D 55* BOOST_VMD_ASSERT_IS_SEQ_D 56 57Types 58 59* BOOST_VMD_IS_TYPE_D 60* BOOST_VMD_ASSERT_IS_TYPE_D 61 62Other 63 64* BOOST_VMD_IS_PARENS_EMPTY_D 65 66[endsect] 67