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 2011-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_IS_IDENTIFIER_HPP)
0008 #define BOOST_VMD_IS_IDENTIFIER_HPP
0009 
0010 #include <boost/vmd/detail/setup.hpp>
0011 
0012 #if BOOST_PP_VARIADICS
0013 
0014 #include <boost/vmd/detail/is_identifier.hpp>
0015 
0016 /*
0017 
0018   The succeeding comments in this file are in doxygen format.
0019 
0020 */
0021 
0022 /** \file
0023 */
0024 
0025 /** \def BOOST_VMD_IS_IDENTIFIER(...)
0026 
0027     \brief Tests whether a parameter is an identifier.
0028 
0029     ...       = variadic parameters
0030     
0031     The first variadic parameter is required and it is the input to test.
0032     
0033     Further variadic parameters are optional and are identifiers to match.
0034     The data may take one of two forms; it is either one or more single identifiers
0035     or a single Boost PP tuple of identifiers.
0036 
0037   @code
0038   
0039     returns   = 1 if the parameter is an identifier, otherwise 0.
0040                 
0041                 If the parameter is not an identifier, 
0042                 or if optional identifiers are specified and the identifier
0043                 does not match any of the optional identifiers, the macro returns 0.
0044                 
0045   @endcode
0046   
0047     Identifiers are registered in VMD with:
0048     
0049   @code
0050   
0051         #define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
0052     
0053   @endcode
0054   
0055     The identifier must be registered to be found.
0056     
0057     Identifiers are pre-detected in VMD with:
0058     
0059   @code
0060   
0061         #define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
0062     
0063   @endcode
0064   
0065     If you specify optional identifiers and have not specified the detection
0066     of an optional identifier, that optional identifier will never match the input.
0067                 
0068     If the input is not a VMD data type this macro could lead to
0069     a preprocessor error. This is because the macro
0070     uses preprocessor concatenation to determine if the input
0071     is an identifier once it is determined that the input does not
0072     start with parenthesis. If the data being concatenated would
0073     lead to an invalid preprocessor token the compiler can issue
0074     a preprocessor error.
0075     
0076 */
0077 
0078 #define BOOST_VMD_IS_IDENTIFIER(...) \
0079     BOOST_VMD_DETAIL_IS_IDENTIFIER(__VA_ARGS__) \
0080 /**/
0081 
0082 /** \def BOOST_VMD_IS_IDENTIFIER_D(d,...)
0083 
0084     \brief Tests whether a parameter is an identifier. Re-entrant version.
0085 
0086     d         = The next available BOOST_PP_WHILE iteration. <br/>
0087     ...       = variadic parameters
0088     
0089     The first variadic parameter is required and it is the input to test.
0090     
0091     Further variadic parameters are optional and are identifiers to match.
0092     The data may take one of two forms; it is either one or more single identifiers
0093     or a single Boost PP tuple of identifiers.
0094 
0095   @code
0096   
0097     returns   = 1 if the parameter is an identifier, otherwise 0.
0098                 
0099                 If the parameter is not an identifier, 
0100                 or if optional identifiers are specified and the identifier
0101                 does not match any of the optional identifiers, the macro returns 0.
0102                 
0103   @endcode
0104   
0105     Identifiers are registered in VMD with:
0106     
0107   @code
0108   
0109         #define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
0110     
0111   @endcode
0112   
0113     The identifier must be registered to be found.
0114     
0115     Identifiers are pre-detected in VMD with:
0116     
0117   @code
0118   
0119         #define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
0120     
0121   @endcode
0122   
0123     If you specify optional identifiers and have not specified the detection
0124     of an optional identifier, that optional identifier will never match the input.
0125                 
0126     If the input is not a VMD data type this macro could lead to
0127     a preprocessor error. This is because the macro
0128     uses preprocessor concatenation to determine if the input
0129     is an identifier once it is determined that the input does not
0130     start with parenthesis. If the data being concatenated would
0131     lead to an invalid preprocessor token the compiler can issue
0132     a preprocessor error.
0133     
0134 */
0135 
0136 #define BOOST_VMD_IS_IDENTIFIER_D(d,...) \
0137     BOOST_VMD_DETAIL_IS_IDENTIFIER_D(d,__VA_ARGS__) \
0138 /**/
0139 
0140 #endif /* BOOST_PP_VARIADICS */
0141 #endif /* BOOST_VMD_IS_IDENTIFIER_HPP */