update boost

This commit is contained in:
2023-11-24 12:56:13 -06:00
parent cfc99971af
commit 19d727037a
9260 changed files with 849256 additions and 299957 deletions

View File

@@ -25,24 +25,28 @@
/** \def BOOST_VMD_ASSERT(...)
\brief Conditionally causes an error to be generated.
... = variadic parameters, maximum of 2 will be considered.
Any variadic parameters beyond the maximum of 2 are just ignored.
The first variadic parameter is:
cond = A condition that determines whether an assertion occurs. Valid values range from 0 to BOOST_PP_LIMIT_MAG.
The second variadic parameter (optional) is:
errstr = An error string for generating a compiler error when using the VC++ compiler.
The VC++ compiler is incapable of producing a preprocessor error so when the 'cond'
is 0, a compiler error is generated by outputting C++ code in the form of:
typedef char errstr[-1];
The errstr defaults to BOOST_VMD_ASSERT_ERROR if not supplied.
It is only relevant for VC++.
The second variadic parameter (optional) is:
errstr = An error string for generating a compiler error when using the VC++ compiler.
The VC++ compiler is incapable of producing a preprocessor error so when the 'cond'
is 0, a compiler error is generated by outputting C++ code in the form of:
@code
typedef char errstr[-1];
@endcode
The errstr defaults to BOOST_VMD_ASSERT_ERROR if not supplied.
It is only relevant for VC++.
returns = If cond expands to 0, this macro causes an error. Otherwise, it expands to nothing.
For all compilers other than Visual C++ the error is a preprocessing error.

View File

@@ -31,9 +31,11 @@
debug mode. However an end-user can force the macro
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
sequence = a possible Boost PP array.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP array, nothing is
@@ -48,6 +50,8 @@
without producing output if the sequence is not a
Boost PP array.
@endcode
*/
/** \def BOOST_VMD_ASSERT_IS_ARRAY_D(d,sequence)
@@ -61,10 +65,12 @@
debug mode. However an end-user can force the macro
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible Boost PP sequence.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP array, nothing is
@@ -79,6 +85,8 @@
without producing output if the sequence is not a
Boost PP array.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -41,9 +41,11 @@
debug mode. However an end-user can force the macro
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
.... = variadic input, for VC++8 this must be a single parameter.
@code
returns = Normally the macro returns nothing.
If the input is empty, nothing is output.
@@ -56,6 +58,8 @@
For all other compilers a compiler error is forced
without producing output if the input is not empty.
@endcode
It is recommended to append BOOST_PP_EMPTY() to whatever input
is being tested in order to avoid possible warning messages
from some compilers about no parameters being passed to the macro

View File

@@ -36,11 +36,13 @@
The variadic parameters are:
sequence = A sequence to test as an identifier.
sequence = A sequence to test as an identifier. <br/>
ids (optional) = The data may take one of two forms:
it is either one or more single identifiers
or a single Boost PP tuple of identifiers.
@code
returns = Normally the macro returns nothing.
If the sequence is an identifier, nothing is
@@ -58,19 +60,29 @@
without producing output if the sequence is not an
identifier.
@endcode
Identifiers are registered in VMD with:
@code
#define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
@endcode
The identifier must be registered to be found.
Identifiers are pre-detected in VMD with:
@code
#define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
@endcode
If you specify optional ids and have not specified the detection
of an optional id, that id will never match an identifier.
*/
/** \def BOOST_VMD_ASSERT_IS_IDENTIFIER_D(d,...)
@@ -85,16 +97,18 @@
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = variadic parameters
The variadic parameters are:
sequence = A sequence to test as an identifier.
sequence = A sequence to test as an identifier. <br/>
ids (optional) = The data may take one of two forms:
it is either one or more single identifiers
or a single Boost PP tuple of identifiers.
@code
returns = Normally the macro returns nothing.
If the sequence is an identifier, nothing is
@@ -112,16 +126,26 @@
without producing output if the sequence is not an
identifier.
@endcode
Identifiers are registered in VMD with:
@code
#define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
@endcode
The identifier must be registered to be found.
Identifiers are pre-detected in VMD with:
@code
#define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
@endcode
If you specify optional ids and have not specified the detection
of an optional id, that id will never match an identifier.

View File

@@ -34,6 +34,8 @@
sequence = a possible Boost PP list.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP list, nothing is
@@ -48,6 +50,8 @@
without producing output if the parameter is not a
Boost PP list.
@endcode
*/
/** \def BOOST_VMD_ASSERT_IS_LIST_D(d,sequence)
@@ -62,9 +66,11 @@
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible Boost PP list.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP list, nothing is
@@ -79,6 +85,8 @@
without producing output if the parameter is not a
Boost PP list.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -34,6 +34,8 @@
sequence = a possible number.
@code
returns = Normally the macro returns nothing.
If the sequence is a number, nothing is
@@ -48,6 +50,8 @@
without producing output if the sequence is not a
number.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -31,9 +31,11 @@
debug mode. However an end-user can force the macro
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
sequence = a possible Boost PP seq.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP seq, nothing is
@@ -48,6 +50,8 @@
without producing output if the sequence is not a
Boost PP seq.
@endcode
*/
/** \def BOOST_VMD_ASSERT_IS_SEQ_D(d,sequence)
@@ -62,9 +66,11 @@
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible Boost PP seq.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP seq, nothing is
@@ -79,6 +85,8 @@
without producing output if the sequence is not a
Boost PP seq.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -34,6 +34,8 @@
sequence = a possible Boost PP tuple.
@code
returns = Normally the macro returns nothing.
If the sequence is a Boost PP tuple, nothing is
@@ -48,6 +50,8 @@
without producing output if the sequence is not a
Boost PP tuple.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -34,6 +34,8 @@
sequence = a possible VMD type.
@code
returns = Normally the macro returns nothing.
If the sequence is a VMD type, nothing is
@@ -48,6 +50,8 @@
without producing output if the sequence is not a
VMD type.
@endcode
*/
/** \def BOOST_VMD_ASSERT_IS_TYPE_D(d,sequence)
@@ -62,9 +66,11 @@
to check or not check by defining the macro
BOOST_VMD_ASSERT_DATA to 1 or 0 respectively.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible VMD type.
@code
returns = Normally the macro returns nothing.
If the sequence is a VMD type, nothing is
@@ -79,6 +85,8 @@
without producing output if the sequence is not a
VMD type.
@endcode
*/
#if !BOOST_VMD_ASSERT_DATA

View File

@@ -493,6 +493,16 @@
(d,vseq1,vseq2,be1,be2,type) \
/**/
#define BOOST_VMD_DETAIL_EQUAL_OV0(vseq1,vseq2) \
BOOST_VMD_DETAIL_EQUAL_EMPTY \
( \
vseq1, \
, \
BOOST_VMD_IS_EMPTY(vseq1), \
1, \
) \
/**/
#define BOOST_VMD_DETAIL_EQUAL_OV1(vseq1,vseq2) \
BOOST_VMD_DETAIL_EQUAL_EMPTY \
( \
@@ -514,6 +524,17 @@
) \
/**/
#define BOOST_VMD_DETAIL_EQUAL_D_OV0(d,vseq1,vseq2) \
BOOST_VMD_DETAIL_EQUAL_EMPTY_D \
( \
d, \
vseq1, \
, \
BOOST_VMD_IS_EMPTY(vseq1), \
1, \
) \
/**/
#define BOOST_VMD_DETAIL_EQUAL_D_OV1(d,vseq1,vseq2) \
BOOST_VMD_DETAIL_EQUAL_EMPTY_D \
( \

View File

@@ -0,0 +1,65 @@
// (C) Copyright Edward Diener 2020
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_HPP)
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_HPP
#include <boost/preprocessor/comparison/equal.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/logical/bitor.hpp>
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
#include <boost/preprocessor/variadic/size.hpp>
#include <boost/preprocessor/variadic/elem.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
#include <boost/vmd/detail/identifier_concat.hpp>
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ_RESULT(ignored) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_VMD_IDENTITY(1)(ignored) \
) \
/**/
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ_ID(vseq) \
BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ_RESULT(BOOST_VMD_DETAIL_IDENTIFIER_CONCATENATE(vseq)) \
/**/
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ(vseq) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_PP_BITOR \
( \
BOOST_VMD_IS_EMPTY(vseq), \
BOOST_PP_IS_BEGIN_PARENS(vseq) \
), \
BOOST_VMD_IDENTITY(0), \
BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ_ID \
) \
(vseq) \
) \
/**/
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_SINGLE(...) \
BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_VSEQ(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
/**/
#define BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER(...) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_PP_EQUAL(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),1), \
BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_SINGLE, \
BOOST_VMD_IDENTITY(0) \
) \
(__VA_ARGS__) \
) \
/**/
#endif /* BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER_HPP */

File diff suppressed because it is too large Load Diff

View File

@@ -26,8 +26,8 @@
/** \def BOOST_VMD_ELEM(elem,...)
\brief Accesses an element of a sequence.
elem = A sequence element number. From 0 to sequence size - 1.
elem = A sequence element number. From 0 to sequence size - 1. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to access.
@@ -62,6 +62,8 @@
parameters do not change what it means that an element is successfully accessed but they
do change what data is returned by the macro.
@code
Splitting: Splitting allows the macro to return the rest of the sequence
after the element accessed.
@@ -132,6 +134,8 @@
filter or if there are no matching identifiers the BOOST_VMD_RETURN_INDEX is ignored
and no index is returned as part of the result.
@endcode
returns = With no optional parameters the element accessed is returned, or emptiness if
element is outside the bounds of the sequence. Filters and matching identifiers
can change the meaning of whether the element accessed is returned or failure
@@ -159,9 +163,9 @@
/** \def BOOST_VMD_ELEM_D(d,elem,...)
\brief Accesses an element of a sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
elem = A sequence element number. From 0 to sequence size - 1.
d = The next available BOOST_PP_WHILE iteration. <br/>
elem = A sequence element number. From 0 to sequence size - 1. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to access.
@@ -196,6 +200,8 @@
parameters do not change what it means that an element is successfully accessed but they
do change what data is returned by the macro.
@code
Splitting: Splitting allows the macro to return the rest of the sequence
after the element accessed.
@@ -264,6 +270,8 @@
filter or if there are no matching identifiers the BOOST_VMD_RETURN_INDEX is ignored
and no index is returned as part of the result.
@endcode
returns = With no optional parameters the element accessed is returned, or emptiness if
element is outside the bounds of the sequence. Filters and matching identifiers
can change the meaning of whether the element accessed is returned or failure

View File

@@ -64,7 +64,7 @@
\brief Converts a sequence to comma-separated elements which are the elements of the sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to convert.

View File

@@ -26,7 +26,7 @@
\brief Tests any two sequences for equality.
sequence = First sequence.
sequence = First sequence. <br/>
... = variadic parameters, maximum of 2.
The first variadic parameter is required and is the second sequence to test.
@@ -57,8 +57,8 @@
\brief Tests any two sequences for equality. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
sequence = First sequence.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = First sequence. <br/>
... = variadic parameters, maximum of 2.
The first variadic parameter is required and is the second sequence to test.

View File

@@ -74,7 +74,7 @@
\brief Returns the type of a sequence as a VMD type. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = variadic parameters.
The first variadic parameter is required and is the sequence whose type we are getting.

View File

@@ -52,7 +52,7 @@
The macro checks that the sequence is a Boost PP array.
It returns 1 if it is an array, else if returns 0.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible Boost PP array.
returns = 1 if it is an array, else returns 0.

View File

@@ -1,5 +1,5 @@
// (C) Copyright Edward Diener 2011-2015
// (C) Copyright Edward Diener 2011-2015,2019
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
@@ -33,18 +33,25 @@
The macro is a variadic macro taking any input.
For the VC++8 compiler (VS2005) the macro takes a single parameter of input to check.
The macro is not perfect, and can not be so. The problem
area is if the input to be checked is a function-like
macro name, in which case either a compiler error can result
or a false result can occur.
For all levels of C++ prior to C++20 the macro is not perfect,
and can not be so. The problem area is if the input to be
checked is a function-like macro name, in which case either
a compiler error can result or a false result can occur.
For C++20, with its support for the new __VA_OPT__ preprocessor
construct, the macro will always work correctly no matter what
the variadic input, and is therefore 100% reliable.
This macro is a replacement, using variadic macro support,
for the undocumented macro BOOST_PP_IS_EMPTY in the Boost
PP library. The code is taken from a posting by Paul Mensonides
of a variadic version for BOOST_PP_IS_EMPTY, and changed
in order to also support VC++.
in order to also support VC++. The code for the C++20
implementation of the macro, using the __VA_OPT__ preprocessor
construct, is the author's own and reuses code added to the
Boost preprocessor library by this author.
.... = variadic input, for VC++8 this must be a single parameter
... = variadic input, for VC++8 this must be a single parameter
returns = 1 if the input is empty, 0 if it is not
@@ -74,7 +81,26 @@
#else
# if defined(__cplusplus) && __cplusplus > 201703L
#include <boost/preprocessor/variadic/has_opt.hpp>
#include <boost/preprocessor/facilities/is_empty.hpp>
#define BOOST_VMD_IS_EMPTY(...) \
BOOST_VMD_DETAIL_IS_EMPTY_IIF \
( \
BOOST_PP_VARIADIC_HAS_OPT() \
) \
( \
BOOST_PP_IS_EMPTY_OPT, \
BOOST_VMD_IS_EMPTY_NO_OPT \
) \
(__VA_ARGS__) \
/**/
# else
#define BOOST_VMD_IS_EMPTY(...) \
BOOST_VMD_IS_EMPTY_NO_OPT(__VA_ARGS__) \
/**/
# endif
#define BOOST_VMD_IS_EMPTY_NO_OPT(...) \
BOOST_VMD_DETAIL_IS_EMPTY_IIF \
( \
BOOST_PP_IS_BEGIN_PARENS \
@@ -88,8 +114,6 @@
) \
(__VA_ARGS__) \
/**/
#endif /* BOOST_VMD_MSVC_V8 */
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_IS_EMPTY_HPP */

View File

@@ -35,7 +35,7 @@
sequence = a possible empty array
returns = 1 if the sequence is an empty Boost PP array
returns = 1 if the sequence is an empty Boost PP array,
0 if it is not.
The macro will generate a preprocessing error if the sequence
@@ -67,10 +67,10 @@
size element is 0 and the second element is a tuple with a single
empty element, ie. '(0,())'.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible empty array
returns = 1 if the sequence is an empty Boost PP array
returns = 1 if the sequence is an empty Boost PP array,
0 if it is not.
The macro will generate a preprocessing error if the sequence

View File

@@ -31,7 +31,7 @@
sequence = a preprocessor parameter
returns = 1 if the sequence is an empty Boost PP list
returns = 1 if the sequence is an empty Boost PP list,
0 if it is not.
The macro will generate a preprocessing error if the input
@@ -52,10 +52,10 @@
An empty Boost PP list consists of the single identifier 'BOOST_PP_NIL'.
This identifier also serves as a list terminator for a non-empty list.
d = The next available BOOST_PP_WHILE iteration
d = The next available BOOST_PP_WHILE iteration <br/>
sequence = a preprocessor parameter
returns = 1 if the sequence is an empty Boost PP list
returns = 1 if the sequence is an empty Boost PP list,
0 if it is not.
The macro will generate a preprocessing error if the input

View File

@@ -0,0 +1,59 @@
// (C) Copyright Edward Diener 2020
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_IS_GENERAL_IDENTIFIER_HPP)
#define BOOST_VMD_IS_GENERAL_IDENTIFIER_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/vmd/detail/is_general_identifier.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_IS_GENERAL_IDENTIFIER(...)
\brief Tests whether a parameter is a general identifier.
... = variadic parameters
The first variadic parameter is required and it is the input to test.
Passing more than one variadic argument is an error.
@code
returns = 1 if the parameter is any general identifier and only a single variadic argument is given, otherwise 0.
@endcode
The argument to the macro should be a single possible identifier
and not a VMD sequence of preprocessor tokens.
If the input is not a VMD data type this macro could lead to
a preprocessor error. This is because the macro
uses preprocessor concatenation to determine if the input
is an identifier once it is determined that the input is not empty
and does not start with parenthesis. If the data being concatenated would
lead to an invalid preprocessor token the compiler can issue
a preprocessor error.
*/
#define BOOST_VMD_IS_GENERAL_IDENTIFIER(...) \
BOOST_VMD_DETAIL_IS_GENERAL_IDENTIFIER(__VA_ARGS__) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_IS_GENERAL_IDENTIFIER_HPP */

View File

@@ -34,22 +34,34 @@
The data may take one of two forms; it is either one or more single identifiers
or a single Boost PP tuple of identifiers.
@code
returns = 1 if the parameter is an identifier, otherwise 0.
If the parameter is not an identifier,
or if optional identifiers are specified and the identifier
does not match any of the optional identifiers, the macro returns 0.
@endcode
Identifiers are registered in VMD with:
@code
#define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
@endcode
The identifier must be registered to be found.
Identifiers are pre-detected in VMD with:
@code
#define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
@endcode
If you specify optional identifiers and have not specified the detection
of an optional identifier, that optional identifier will never match the input.
@@ -71,7 +83,7 @@
\brief Tests whether a parameter is an identifier. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = variadic parameters
The first variadic parameter is required and it is the input to test.
@@ -80,22 +92,34 @@
The data may take one of two forms; it is either one or more single identifiers
or a single Boost PP tuple of identifiers.
@code
returns = 1 if the parameter is an identifier, otherwise 0.
If the parameter is not an identifier,
or if optional identifiers are specified and the identifier
does not match any of the optional identifiers, the macro returns 0.
@endcode
Identifiers are registered in VMD with:
@code
#define BOOST_VMD_REG_XXX (XXX) where XXX is a v-identifier.
@endcode
The identifier must be registered to be found.
Identifiers are pre-detected in VMD with:
@code
#define BOOST_VMD_DETECT_XXX_XXX where XXX is an identifier.
@endcode
If you specify optional identifiers and have not specified the detection
of an optional identifier, that optional identifier will never match the input.

View File

@@ -52,7 +52,7 @@
The macro checks that the sequence is a pplib list.
It returns 1 if it is a list, else if returns 0.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = input as a possible Boost PP list.
returns = 1 if it a list, else returns 0.

View File

@@ -46,7 +46,7 @@
\brief Determines if the sequence has more than one element, referred to as a multi-element sequence.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a sequence
returns = 1 if the sequence is a multi-element sequence, else returns 0.

View File

@@ -27,11 +27,11 @@
\brief Tests whether a sequence is a Boost PP number.
The macro checks to see if a sequence is a Boost PP number.
A Boost PP number is a value from 0 to 256.
A Boost PP number is a value from 0 to BOOST_PP_LIMIT_MAG.
sequence = a possible number
returns = 1 if the sequence is a Boost PP number,
returns = 1 if the sequence is a Boost PP number,
0 if it is not.
If the input is not a VMD data type this macro could lead to

View File

@@ -31,6 +31,8 @@
returns = 1 if the sequence is a set of parens with no data,
else returns 0.
@code
A set of parens with no data may be:
1) a tuple whose size is a single element which is empty
@@ -39,6 +41,8 @@
2) a single element seq whose data is empty
@endcode
*/
#define BOOST_VMD_IS_PARENS_EMPTY(sequence) \
@@ -49,12 +53,14 @@
\brief Determines if the sequence is a set of parens with no data. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a VMD sequence
returns = 1 if the sequence is a set of parens with no data,
else returns 0.
@code
A set of parens with no data may be:
1) a tuple whose size is a single element which is empty
@@ -63,6 +69,8 @@
2) a single element seq whose data is empty
@endcode
*/
#define BOOST_VMD_IS_PARENS_EMPTY_D(d,sequence) \

View File

@@ -51,7 +51,7 @@
The macro checks that the sequence is a Boost PP seq.
It returns 1 if it is a seq, else if returns 0.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible Boost PP seq
returns = 1 if it a seq, else returns 0.

View File

@@ -32,7 +32,7 @@
sequence = a possible tuple
returns = 1 if the sequence is a Boost PP tuple.
returns = 1 if the sequence is a Boost PP tuple,
0 if it is not.
*/

View File

@@ -49,7 +49,7 @@
\brief Tests whether a sequence is a VMD type. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a possible VMD type
returns = 1 if the sequence is a VMD type,

View File

@@ -46,7 +46,7 @@
\brief Determines if the sequence has only a single element, referred to as a single-element sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = a sequence
returns = 1 if the sequence is a single-element sequence, else returns 0.

View File

@@ -27,7 +27,7 @@
\brief Tests any two sequences for inequality.
sequence = First sequence.
sequence = First sequence. <br/>
... = variadic parameters, maximum of 2.
The first variadic parameter is required and is the second sequence to test.
@@ -60,8 +60,8 @@
\brief Tests any two sequences for inequality. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
sequence = First sequence.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = First sequence. <br/>
... = variadic parameters, maximum of 2.
The first variadic parameter is required and is the second sequence to test.

View File

@@ -29,7 +29,7 @@
\brief appends an element to the end of a seq.
seq = seq to to append an element to.
seq = seq to to append an element to. <br/>
elem = element to append.
If the seq is an empty seq the result is a seq with the single element.

View File

@@ -29,7 +29,7 @@
\brief inserts an element at the beginning of a seq.
seq = seq to insert an element at.
seq = seq to insert an element at. <br/>
elem = element to insert.
If the seq is an empty seq the result is a seq with the single element.

View File

@@ -31,7 +31,7 @@
\brief removes an element from a seq.
seq = seq from which an element is to be removed.
seq = seq from which an element is to be removed. <br/>
index = The zero-based position in seq of the element to be removed.
If index is greater or equal to the seq size the result is undefined.

View File

@@ -41,7 +41,7 @@
\brief Returns the size of a sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
sequence = A sequence to test.
returns = If the sequence is empty returns 0, else returns the number of elements

View File

@@ -63,7 +63,7 @@
\brief Converts a sequence to a Boost PP array whose elements are the elements of the sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to convert.

View File

@@ -63,7 +63,7 @@
\brief Converts a sequence to a Boost PP list whose elements are the elements of the sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to convert.

View File

@@ -63,7 +63,7 @@
\brief Converts a sequence to a Boost PP seq whose elements are the elements of the sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to convert.

View File

@@ -63,7 +63,7 @@
\brief Converts a sequence to a Boost PP tuple whose elements are the elements of the sequence. Re-entrant version.
d = The next available BOOST_PP_WHILE iteration.
d = The next available BOOST_PP_WHILE iteration. <br/>
... = Variadic parameters.
The first variadic parameter is required and is the sequence to convert.

View File

@@ -51,7 +51,7 @@
\brief pops an element from the end of a tuple. It reenters BOOST_PP_REPEAT with maximum efficiency.
z = the next available BOOST_PP_REPEAT dimension.
z = the next available BOOST_PP_REPEAT dimension. <br/>
tuple = tuple to pop an element from.
If the tuple is an empty tuple the result is undefined.

View File

@@ -51,7 +51,7 @@
\brief pops an element from the front of a tuple. It reenters BOOST_PP_REPEAT with maximum efficiency.
z = the next available BOOST_PP_REPEAT dimension.
z = the next available BOOST_PP_REPEAT dimension. <br/>
tuple = tuple to pop an element from.
If the tuple is an empty tuple the result is undefined.

View File

@@ -29,7 +29,7 @@
\brief appends an element to the end of a tuple.
tuple = tuple to to append an element to.
tuple = tuple to to append an element to. <br/>
elem = element to append.
If the tuple is an empty tuple the result is a tuple with the single element.

View File

@@ -29,7 +29,7 @@
\brief inserts an element at the beginning of a tuple.
tuple = tuple to insert an element at.
tuple = tuple to insert an element at. <br/>
elem = element to insert.
If the tuple is an empty tuple the result is a tuple with the single element.

View File

@@ -31,7 +31,7 @@
\brief removes an element from a tuple.
tuple = tuple from which an element is to be removed.
tuple = tuple from which an element is to be removed. <br/>
index = The zero-based position in tuple of the element to be removed.
If index is greater or equal to the tuple size the result is undefined.
@@ -57,8 +57,8 @@
\brief removes an element from a tuple. It reenters BOOST_PP_WHILE with maximum efficiency.
d = The next available BOOST_PP_WHILE iteration.
tuple = tuple from which an element is to be removed.
d = The next available BOOST_PP_WHILE iteration. <br/>
tuple = tuple from which an element is to be removed. <br/>
index = The zero-based position in tuple of the element to be removed.
If index is greater or equal to the tuple size the result is undefined.

View File

@@ -31,6 +31,7 @@
#include <boost/vmd/is_empty.hpp>
#include <boost/vmd/is_empty_array.hpp>
#include <boost/vmd/is_empty_list.hpp>
#include <boost/vmd/is_general_identifier.hpp>
#include <boost/vmd/is_identifier.hpp>
#include <boost/vmd/is_list.hpp>
#include <boost/vmd/is_multi.hpp>