feat():initial version
This commit is contained in:
18
install/boost_1_75_0/include/boost/vmd/array.hpp
Normal file
18
install/boost_1_75_0/include/boost/vmd/array.hpp
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2015
|
||||
// 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_ARRAY_HPP)
|
||||
#define BOOST_VMD_ARRAY_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#include <boost/vmd/array/to_seq.hpp>
|
||||
#include <boost/vmd/array/to_tuple.hpp>
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ARRAY_HPP */
|
||||
49
install/boost_1_75_0/include/boost/vmd/array/to_seq.hpp
Normal file
49
install/boost_1_75_0/include/boost/vmd/array/to_seq.hpp
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2015
|
||||
// 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_ARRAY_TO_SEQ_HPP)
|
||||
#define BOOST_VMD_ARRAY_TO_SEQ_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/array/to_seq.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/is_empty_array.hpp>
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ARRAY_TO_SEQ(array)
|
||||
|
||||
\brief converts an array to a seq.
|
||||
|
||||
array = array to be converted.
|
||||
|
||||
If the array is an array of 0 elements it is converted to an empty seq.
|
||||
Otherwise the array is converted to a seq with the same number of elements as the array.
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_ARRAY_TO_SEQ(array) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY_ARRAY(array), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_PP_ARRAY_TO_SEQ \
|
||||
) \
|
||||
(array) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ARRAY_TO_SEQ_HPP */
|
||||
49
install/boost_1_75_0/include/boost/vmd/array/to_tuple.hpp
Normal file
49
install/boost_1_75_0/include/boost/vmd/array/to_tuple.hpp
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2015
|
||||
// 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_ARRAY_TO_TUPLE_HPP)
|
||||
#define BOOST_VMD_ARRAY_TO_TUPLE_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/array/to_tuple.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/is_empty_array.hpp>
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ARRAY_TO_TUPLE(array)
|
||||
|
||||
\brief converts an array to a tuple.
|
||||
|
||||
array = array to be converted.
|
||||
|
||||
If the array is an array of 0 elements it is converted to an empty tuple.
|
||||
Otherwise the array is converted to a tuple with the same number of elements as the array.
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_ARRAY_TO_TUPLE(array) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY_ARRAY(array), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_PP_ARRAY_TO_TUPLE \
|
||||
) \
|
||||
(array) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ARRAY_TO_TUPLE_HPP */
|
||||
62
install/boost_1_75_0/include/boost/vmd/assert.hpp
Normal file
62
install/boost_1_75_0/include/boost/vmd/assert.hpp
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_HPP)
|
||||
#define BOOST_VMD_ASSERT_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#include <boost/vmd/detail/assert.hpp>
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \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:
|
||||
|
||||
@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.
|
||||
For Visual C++ the error is caused by output invalid C++: this error could be
|
||||
masked if the invalid output is ignored by a macro which invokes this macro.
|
||||
|
||||
*/
|
||||
# define BOOST_VMD_ASSERT(...) \
|
||||
BOOST_VMD_DETAIL_ASSERT(__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_HPP */
|
||||
121
install/boost_1_75_0/include/boost/vmd/assert_is_array.hpp
Normal file
121
install/boost_1_75_0/include/boost/vmd/assert_is_array.hpp
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_ARRAY_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_ARRAY_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_ARRAY(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP array.
|
||||
|
||||
The macro checks that the sequence is a Boost PP array.
|
||||
If it is not a Boost PP array, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP array only in
|
||||
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
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP array the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
Boost PP array.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_ARRAY_D(d,sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP array. Re-entrant version.
|
||||
|
||||
The macro checks that the sequence is a Boost PP array.
|
||||
If it is not a Boost PP array, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP array only in
|
||||
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. <br/>
|
||||
sequence = a possible Boost PP sequence.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a Boost PP array, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP array the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
Boost PP array.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_ARRAY(sequence)
|
||||
#define BOOST_VMD_ASSERT_IS_ARRAY_D(d,sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/is_array.hpp>
|
||||
#include <boost/vmd/assert.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_ARRAY(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_ARRAY(sequence), \
|
||||
BOOST_VMD_IS_ARRAY_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_ARRAY_D(d,sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_ARRAY_D(d,sequence), \
|
||||
BOOST_VMD_IS_ARRAY_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* !BOOST_VMD_ASSERT_DATA */
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_ARRAY_HPP */
|
||||
109
install/boost_1_75_0/include/boost/vmd/assert_is_empty.hpp
Normal file
109
install/boost_1_75_0/include/boost/vmd/assert_is_empty.hpp
Normal file
@@ -0,0 +1,109 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_EMPTY_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_EMPTY_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#if BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_EMPTY(...)
|
||||
|
||||
\brief Asserts that the input is empty.
|
||||
|
||||
The macro checks to see if the input is empty or not.
|
||||
If it is not empty, it forces a compiler error.
|
||||
|
||||
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 and not variadic data.
|
||||
|
||||
The macro normally checks for emptiness only in
|
||||
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.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the input is not empty the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
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
|
||||
when the input is truly empty.
|
||||
|
||||
*/
|
||||
|
||||
#if BOOST_VMD_MSVC_V8
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_EMPTY(input)
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_EMPTY(input) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(input), \
|
||||
BOOST_VMD_IS_EMPTY_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif // !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#else
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_EMPTY(...)
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_EMPTY(...) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(__VA_ARGS__), \
|
||||
BOOST_VMD_IS_EMPTY_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif // !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#endif /* BOOST_VMD_MSVC_V8 */
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_EMPTY_HPP */
|
||||
182
install/boost_1_75_0/include/boost/vmd/assert_is_identifier.hpp
Normal file
182
install/boost_1_75_0/include/boost/vmd/assert_is_identifier.hpp
Normal file
@@ -0,0 +1,182 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_IDENTIFIER_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_IDENTIFIER_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_IDENTIFIER(...)
|
||||
|
||||
\brief Asserts that the sequence is an identifier.
|
||||
|
||||
The macro checks that the sequence is an identifier.
|
||||
If it is not an identifier, it forces a compiler error.
|
||||
|
||||
The macro normally checks for an identifier only in
|
||||
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 parameters
|
||||
|
||||
The variadic parameters are:
|
||||
|
||||
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
|
||||
output. If optional ids are specified, for the
|
||||
sequence to be an identifier it must be an
|
||||
identifier that matches one of the optional
|
||||
ids.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not an identifier the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
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,...)
|
||||
|
||||
\brief Asserts that the sequence is an identifier. Re-entrant version.
|
||||
|
||||
The macro checks that the sequence is an identifier.
|
||||
If it is not an identifier, it forces a compiler error.
|
||||
|
||||
The macro normally checks for an identifier only in
|
||||
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. <br/>
|
||||
... = variadic parameters
|
||||
|
||||
The variadic parameters are:
|
||||
|
||||
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
|
||||
output. If optional ids are specified, for the
|
||||
sequence to be an identifier it must be an
|
||||
identifier that matches one of the optional
|
||||
ids.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not an identifier the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_IDENTIFIER(...)
|
||||
#define BOOST_VMD_ASSERT_IS_IDENTIFIER_D(d,...)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_identifier.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_IDENTIFIER(...) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_IDENTIFIER(__VA_ARGS__), \
|
||||
BOOST_VMD_IDENTIFIER_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_IDENTIFIER_D(d,...) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_IDENTIFIER_D(d,__VA_ARGS__), \
|
||||
BOOST_VMD_IDENTIFIER_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif // !BOOST_VMD_ASSERT_DATA
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_IDENTIFIER_HPP */
|
||||
121
install/boost_1_75_0/include/boost/vmd/assert_is_list.hpp
Normal file
121
install/boost_1_75_0/include/boost/vmd/assert_is_list.hpp
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_LIST_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_LIST_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_LIST(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP list.
|
||||
|
||||
The macro checks that the sequence is a Boost PP list.
|
||||
If it is not a Boost PP list, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP list only in
|
||||
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 list.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a Boost PP list, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP list the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the parameter is not a
|
||||
Boost PP list.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_LIST_D(d,sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP list. Re-entrant version.
|
||||
|
||||
The macro checks that the sequence is a Boost PP list.
|
||||
If it is not a Boost PP list, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP list only in
|
||||
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. <br/>
|
||||
sequence = a possible Boost PP list.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a Boost PP list, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP list the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the parameter is not a
|
||||
Boost PP list.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_LIST(sequence)
|
||||
#define BOOST_VMD_ASSERT_IS_LIST_D(d,sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_list.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_LIST(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_LIST(sequence), \
|
||||
BOOST_VMD_ASSERT_IS_LIST_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_LIST_D(d,sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_LIST_D(d,sequence), \
|
||||
BOOST_VMD_ASSERT_IS_LIST_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_ASSERT_DATA */
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_LIST_HPP */
|
||||
77
install/boost_1_75_0/include/boost/vmd/assert_is_number.hpp
Normal file
77
install/boost_1_75_0/include/boost/vmd/assert_is_number.hpp
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_NUMBER_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_NUMBER_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_NUMBER(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a number.
|
||||
|
||||
The macro checks that the parameter is a number.
|
||||
If it is not a number, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a number only in
|
||||
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 number.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a number, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a number the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
number.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_NUMBER(sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_number.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_NUMBER(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_NUMBER(sequence), \
|
||||
BOOST_VMD_IS_NUMBER_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif // !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_NUMBER_HPP */
|
||||
121
install/boost_1_75_0/include/boost/vmd/assert_is_seq.hpp
Normal file
121
install/boost_1_75_0/include/boost/vmd/assert_is_seq.hpp
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_SEQ_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_SEQ_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_SEQ(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP seq.
|
||||
|
||||
The macro checks that the sequence is a Boost PP seq.
|
||||
If it is not a Boost PP seq, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP seq only in
|
||||
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
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP seq the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
Boost PP seq.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_SEQ_D(d,sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP seq. Re-entrant version.
|
||||
|
||||
The macro checks that the sequence is a Boost PP seq.
|
||||
If it is not a Boost PP seq, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP seq only in
|
||||
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. <br/>
|
||||
sequence = a possible Boost PP seq.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a Boost PP seq, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP seq the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
Boost PP seq.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_SEQ(sequence)
|
||||
#define BOOST_VMD_ASSERT_IS_SEQ_D(d,sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_seq.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_SEQ(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_SEQ(sequence), \
|
||||
BOOST_VMD_ASSERT_IS_SEQ_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_SEQ_D(d,sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_SEQ_D(d,sequence), \
|
||||
BOOST_VMD_ASSERT_IS_SEQ_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_ASSERT_DATA */
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_SEQ_HPP */
|
||||
77
install/boost_1_75_0/include/boost/vmd/assert_is_tuple.hpp
Normal file
77
install/boost_1_75_0/include/boost/vmd/assert_is_tuple.hpp
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_TUPLE_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_TUPLE_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_TUPLE(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a Boost PP tuple.
|
||||
|
||||
The macro checks that the sequence is a Boost PP tuple.
|
||||
If it is not a Boost PP tuple, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a Boost PP tuple only in
|
||||
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 tuple.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a Boost PP tuple, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a Boost PP tuple the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
Boost PP tuple.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_TUPLE(sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_TUPLE(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(sequence), \
|
||||
BOOST_VMD_ASSERT_IS_TUPLE_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_ASSERT_DATA */
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_TUPLE_HPP */
|
||||
121
install/boost_1_75_0/include/boost/vmd/assert_is_type.hpp
Normal file
121
install/boost_1_75_0/include/boost/vmd/assert_is_type.hpp
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_IS_TYPE_HPP)
|
||||
#define BOOST_VMD_ASSERT_IS_TYPE_HPP
|
||||
|
||||
#include <boost/vmd/detail/setup.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
/*
|
||||
|
||||
The succeeding comments in this file are in doxygen format.
|
||||
|
||||
*/
|
||||
|
||||
/** \file
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_TYPE(sequence)
|
||||
|
||||
\brief Asserts that the sequence is a VMD type.
|
||||
|
||||
The macro checks that the sequence is a VMD type.
|
||||
If it is not a VMD type, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a VMD type only in
|
||||
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 VMD type.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a VMD type, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a VMD type the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
VMD type.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
/** \def BOOST_VMD_ASSERT_IS_TYPE_D(d,sequence)
|
||||
|
||||
\brief Asserts that the sequence is a VMD type. Re-entrant version.
|
||||
|
||||
The macro checks that the sequence is a VMD type.
|
||||
If it is not a VMD type, it forces a compiler error.
|
||||
|
||||
The macro normally checks for a VMD type only in
|
||||
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. <br/>
|
||||
sequence = a possible VMD type.
|
||||
|
||||
@code
|
||||
|
||||
returns = Normally the macro returns nothing.
|
||||
|
||||
If the sequence is a VMD type, nothing is
|
||||
output.
|
||||
|
||||
For VC++, because there is no sure way of forcing
|
||||
a compiler error from within a macro without producing
|
||||
output, if the sequence is not a VMD type the
|
||||
macro forces a compiler error by outputting invalid C++.
|
||||
|
||||
For all other compilers a compiler error is forced
|
||||
without producing output if the sequence is not a
|
||||
VMD type.
|
||||
|
||||
@endcode
|
||||
|
||||
*/
|
||||
|
||||
#if !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_TYPE(sequence)
|
||||
#define BOOST_VMD_ASSERT_IS_TYPE_D(d,sequence)
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/vmd/assert.hpp>
|
||||
#include <boost/vmd/is_type.hpp>
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_TYPE(sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_TYPE(sequence), \
|
||||
BOOST_VMD_IS_TYPE_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_ASSERT_IS_TYPE_D(d,sequence) \
|
||||
BOOST_VMD_ASSERT \
|
||||
( \
|
||||
BOOST_VMD_IS_TYPE_D(d,sequence), \
|
||||
BOOST_VMD_IS_TYPE_ASSERT_ERROR \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif // !BOOST_VMD_ASSERT_DATA
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_VMD_ASSERT_IS_TYPE_HPP */
|
||||
@@ -0,0 +1,97 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ADJUST_TUPLE_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/is_array_common.hpp>
|
||||
#include <boost/vmd/detail/is_list.hpp>
|
||||
#include <boost/vmd/detail/type_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_ARRAY(data,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX(data), \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_ARRAY_D(d,data,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D(d,data), \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_LIST(data,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_WLOOP(data), \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_ARRAY \
|
||||
) \
|
||||
(data,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_LIST_D(d,data,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_WLOOP_D(d,data), \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_ARRAY_D \
|
||||
) \
|
||||
(d,data,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Input is any VMD data and a VMD type for that data
|
||||
|
||||
If the type is a tuple, checks to see if it is a more specific
|
||||
type and, if it is, returns that type,
|
||||
otherwise returns the type passed as a parameter
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(data,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(BOOST_VMD_TYPE_TUPLE,type), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_LIST, \
|
||||
BOOST_VMD_IDENTITY(type) \
|
||||
) \
|
||||
(data,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,data,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,BOOST_VMD_TYPE_TUPLE,type), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_CHECK_LIST_D, \
|
||||
BOOST_VMD_IDENTITY(type) \
|
||||
) \
|
||||
(d,data,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_HPP */
|
||||
189
install/boost_1_75_0/include/boost/vmd/detail/array.hpp
Normal file
189
install/boost_1_75_0/include/boost/vmd/detail/array.hpp
Normal file
@@ -0,0 +1,189 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ARRAY_HPP)
|
||||
#define BOOST_VMD_DETAIL_ARRAY_HPP
|
||||
|
||||
#include <boost/preprocessor/control/expr_iif.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/is_array_common.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_CHECK_FOR_ARRAY(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(tuple), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_CHECK_FOR_ARRAY_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(tuple), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_PROCESS(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_ARRAY_CHECK_FOR_ARRAY \
|
||||
) \
|
||||
(tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_PROCESS_D(d,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_ARRAY_CHECK_FOR_ARRAY_D \
|
||||
) \
|
||||
(d,tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_SPLIT(param) \
|
||||
BOOST_VMD_DETAIL_ARRAY_PROCESS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE(param,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_SPLIT_D(d,param) \
|
||||
BOOST_VMD_DETAIL_ARRAY_PROCESS_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_TUPLE_D(d,param,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN_CHECK_FOR_ARRAY(tuple) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX(tuple), \
|
||||
tuple \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN_CHECK_FOR_ARRAY_D(d,tuple) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D(d,tuple), \
|
||||
tuple \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN_TUPLE(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(tuple), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN_CHECK_FOR_ARRAY \
|
||||
) \
|
||||
(tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN_TUPLE_D(d,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(tuple), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN_CHECK_FOR_ARRAY_D \
|
||||
) \
|
||||
(d,tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN(param) \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE(param) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_BEGIN_D(d,param) \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_TUPLE_D(d,param) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_ARRAY_SPLIT, \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ARRAY_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_ARRAY_SPLIT_D, \
|
||||
BOOST_VMD_DETAIL_ARRAY_BEGIN_D \
|
||||
) \
|
||||
(d,BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_ARRAY_HPP */
|
||||
69
install/boost_1_75_0/include/boost/vmd/detail/assert.hpp
Normal file
69
install/boost_1_75_0/include/boost/vmd/detail/assert.hpp
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ASSERT_HPP)
|
||||
#define BOOST_VMD_DETAIL_ASSERT_HPP
|
||||
|
||||
#include <boost/preprocessor/debug/assert.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
|
||||
#if BOOST_VMD_MSVC
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_OUTPUT(errstr) \
|
||||
BOOST_PP_ASSERT(0) \
|
||||
typedef char errstr[-1]; \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_DEFAULT(...) \
|
||||
BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_OUTPUT(BOOST_VMD_ASSERT_ERROR) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_ERRSTR(...) \
|
||||
BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_OUTPUT(BOOST_PP_VARIADIC_ELEM(1,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT_TRUE(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL \
|
||||
( \
|
||||
BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), \
|
||||
1 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_DEFAULT, \
|
||||
BOOST_VMD_DETAIL_ASSERT_VC_GEN_ERROR_ERRSTR \
|
||||
) \
|
||||
(__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT(...) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_ASSERT_TRUE \
|
||||
) \
|
||||
(__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT_DO(cond) \
|
||||
BOOST_PP_ASSERT(cond) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ASSERT(...) \
|
||||
BOOST_VMD_DETAIL_ASSERT_DO(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_MSVC */
|
||||
#endif /* BOOST_VMD_DETAIL_ASSERT_HPP */
|
||||
202
install/boost_1_75_0/include/boost/vmd/detail/data_equal.hpp
Normal file
202
install/boost_1_75_0/include/boost/vmd/detail/data_equal.hpp
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_1.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_2.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_3.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_4.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_5.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_6.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_7.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_8.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_9.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_10.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_11.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_12.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_13.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_14.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_15.hpp>
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_16.hpp>
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_HPP */
|
||||
@@ -0,0 +1,409 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/inc.hpp>
|
||||
#include <boost/preprocessor/array/elem.hpp>
|
||||
#include <boost/preprocessor/array/size.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/list/at.hpp>
|
||||
#include <boost/preprocessor/list/size.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/seq/elem.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/pop_front.hpp>
|
||||
#include <boost/preprocessor/tuple/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/replace.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/get_type.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(vseq1,vseq2) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq1), \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_ARRAY(d,index,data) \
|
||||
BOOST_PP_ARRAY_ELEM(index,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_LIST(d,index,data) \
|
||||
BOOST_PP_LIST_AT_D(d,data,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_SEQ(d,index,data) \
|
||||
BOOST_PP_SEQ_ELEM(index,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_TUPLE(d,index,data) \
|
||||
BOOST_PP_TUPLE_ELEM(index,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_ARRAY(data) \
|
||||
BOOST_PP_ARRAY_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_LIST(data) \
|
||||
BOOST_PP_LIST_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_SEQ(data) \
|
||||
BOOST_PP_SEQ_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_TUPLE(data) \
|
||||
BOOST_PP_TUPLE_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_ARRAY_D(d,data) \
|
||||
BOOST_PP_ARRAY_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_LIST_D(d,data) \
|
||||
BOOST_PP_LIST_SIZE_D(d,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_SEQ_D(d,data) \
|
||||
BOOST_PP_SEQ_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_TUPLE_D(d,data) \
|
||||
BOOST_PP_TUPLE_SIZE(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM(d,index,data,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_ARRAY, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_LIST, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_SEQ, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM_TUPLE \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,index,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(data,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_ARRAY, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_LIST, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_SEQ, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_TUPLE \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,data,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_ARRAY_D, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_LIST_D, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_SEQ_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_TUPLE_D \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_RESULT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_FIRST(state) \
|
||||
BOOST_PP_TUPLE_ELEM(1,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_SECOND(state) \
|
||||
BOOST_PP_TUPLE_ELEM(2,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_SIZE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(3,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_TYPE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(4,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state) \
|
||||
BOOST_PP_TUPLE_ELEM(5,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state) \
|
||||
BOOST_PP_TUPLE_ELEM(6,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_SIZE(state) \
|
||||
), \
|
||||
BOOST_PP_COMPL(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_EMPTY(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_EMPTY(state) \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_INDEX(state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_EMPTY(state), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
) \
|
||||
(0,BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP_NE_EMPTY(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
6, \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP_NE_REMOVE(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
6, \
|
||||
BOOST_PP_TUPLE_POP_FRONT(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state)),1), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP_NE_EMPTY, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP_NE_REMOVE \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH_CREATE(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
6, \
|
||||
(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state)) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH_ADD(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
6, \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_EMPTY(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH_CREATE, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH_ADD \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_INDEX(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_INDEX, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX \
|
||||
) \
|
||||
(state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_INDEX(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_FIRST(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_TYPE(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_ELEM \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_INDEX(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_SECOND(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_TYPE(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_PRED(d,state) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_RESULT(state), \
|
||||
1 \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_NOT_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_SIZE(state) \
|
||||
), \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_EMPTY(state) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS_NCP(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
5, \
|
||||
BOOST_PP_INC(BOOST_VMD_DETAIL_DATA_EQUAL_STATE_INDEX(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_POP, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS_NCP \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_FAILURE(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
0, \
|
||||
0 \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT(d,state,result) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,result,0), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_FAILURE, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,result,1), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_SUCCESS, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PUSH \
|
||||
) \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_TYPE(emf,ems,vtype) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_GET_TYPE(emf), \
|
||||
vtype \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_GET_TYPE(ems), \
|
||||
vtype \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_TYPE_D(d,emf,ems,vtype) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_GET_TYPE(emf), \
|
||||
vtype \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_GET_TYPE(ems), \
|
||||
vtype \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_COMMON_HPP */
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EMPTY_RESULT_HPP)
|
||||
#define BOOST_VMD_DETAIL_EMPTY_RESULT_HPP
|
||||
|
||||
#define BOOST_VMD_DETAIL_EMPTY_RESULT(...) (,)
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EMPTY_RESULT_HPP */
|
||||
583
install/boost_1_75_0/include/boost/vmd/detail/equal.hpp
Normal file
583
install/boost_1_75_0/include/boost/vmd/detail/equal.hpp
Normal file
@@ -0,0 +1,583 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/detail/auto_rec.hpp>
|
||||
#include <boost/preprocessor/facilities/empty.hpp>
|
||||
#include <boost/preprocessor/facilities/overload.hpp>
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
#include <boost/vmd/is_identifier.hpp>
|
||||
#include <boost/vmd/is_empty_list.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_1.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_2.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_3.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_4.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_5.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_6.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_7.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_8.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_9.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_10.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_11.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_12.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_13.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_14.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_15.hpp>
|
||||
#include <boost/vmd/detail/recurse/equal/equal_16.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_1(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_1_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_2(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_2_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_3(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_3_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_4(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_4_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_5(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_5_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_6(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_6_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_7(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_7_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_8(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_8_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_9(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_9_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_10(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_10_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_11(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_11_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_12(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_12_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_13(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_13_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_14(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_14_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_15(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_15_D(d,vseq1,vseq2)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_16(d,vseq1,vseq2) BOOST_VMD_DETAIL_EQUAL_16_D(d,vseq1,vseq2)
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_AUTO_REC_D(n) \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_1 \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_ ## n(1,,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D_, \
|
||||
BOOST_PP_AUTO_REC(BOOST_VMD_DETAIL_EQUAL_SIMPLE_AUTO_REC_D,16) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_TUPLE(vseq1,vtype1,type) \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
vtype1 \
|
||||
), \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
vtype1 \
|
||||
), \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY_LIST(vseq1) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_TUPLE_D(d,vseq1,vtype1,type) \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
vtype1 \
|
||||
), \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
vtype1 \
|
||||
), \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY_LIST_D(d,vseq1) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_IDENTIFIER(vseq1,vtype1,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_IDENTIFIER, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_IS_IDENTIFIER, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_IDENTIFIER_D(d,vseq1,vtype1,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_IDENTIFIER, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_IS_IDENTIFIER_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK(vseq1,vtype1,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_TUPLE, \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_IDENTIFIER \
|
||||
) \
|
||||
(vseq1,vtype1,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_D(d,vseq1,vtype1,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_TUPLE_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_IDENTIFIER_D \
|
||||
) \
|
||||
(d,vseq1,vtype1,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE(vseq1,vtype1,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(1), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK \
|
||||
) \
|
||||
(vseq1,vtype1,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_D(d,vseq1,vtype1,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(1), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_CHECK_D \
|
||||
) \
|
||||
(d,vseq1,vtype1,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT_CHECK(vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(type), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE, \
|
||||
BOOST_VMD_IDENTITY(1) \
|
||||
) \
|
||||
(vseq1,vtype1,type) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(type), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TEST_TYPE_D, \
|
||||
BOOST_VMD_IDENTITY(1) \
|
||||
) \
|
||||
(d,vseq1,vtype1,type) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT_CONVERT(vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT(vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_WT_D(d,vseq1,vseq2,vtype1,vtype2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_GTYPE(vseq1,vseq2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_GTYPE_D(d,vseq1,vseq2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_EBP(vseq1,vseq2,be1,be2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_EBP_D(d,vseq1,vseq2,be1,be2,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,type) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_EMPTY(vseq1,vseq2,be1,be2,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_EMPTY_D(d,vseq1,vseq2,be1,be2,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_EBP_D \
|
||||
) \
|
||||
(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 \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2), \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_OV2(vseq1,vseq2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#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 \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2), \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_D_OV2(d,vseq1,vseq2,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#if BOOST_VMD_MSVC
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL(vseq1,...) \
|
||||
BOOST_PP_CAT(BOOST_PP_OVERLOAD(BOOST_VMD_DETAIL_EQUAL_OV,__VA_ARGS__)(vseq1,__VA_ARGS__),BOOST_PP_EMPTY()) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_D(d,vseq1,...) \
|
||||
BOOST_PP_CAT(BOOST_PP_OVERLOAD(BOOST_VMD_DETAIL_EQUAL_D_OV,__VA_ARGS__)(d,vseq1,__VA_ARGS__),BOOST_PP_EMPTY()) \
|
||||
/**/
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL(vseq1,...) \
|
||||
BOOST_PP_OVERLOAD(BOOST_VMD_DETAIL_EQUAL_OV,__VA_ARGS__)(vseq1,__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_D(d,vseq1,...) \
|
||||
BOOST_PP_OVERLOAD(BOOST_VMD_DETAIL_EQUAL_D_OV,__VA_ARGS__)(d,vseq1,__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_HPP */
|
||||
153
install/boost_1_75_0/include/boost/vmd/detail/equal_common.hpp
Normal file
153
install/boost_1_75_0/include/boost/vmd/detail/equal_common.hpp
Normal file
@@ -0,0 +1,153 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/comparison/not_equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/logical/bitxor.hpp>
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/get_type.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/match_single_identifier.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CONCAT_1 (1)
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_IS_1(res) \
|
||||
BOOST_PP_IS_BEGIN_PARENS \
|
||||
( \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CONCAT_, \
|
||||
res \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_MATCH_SINGLE_IDENTIFIER(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(vseq1,vseq2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI_SMP(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_NUMBER), \
|
||||
BOOST_PP_EQUAL, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TYPE), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE, \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER \
|
||||
) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_NUMBER), \
|
||||
BOOST_PP_EQUAL_D, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TYPE), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_MATCH_SINGLE_IDENTIFIER \
|
||||
) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_SIZE(vseq1,vseq2) \
|
||||
BOOST_PP_NOT_EQUAL \
|
||||
( \
|
||||
BOOST_PP_TUPLE_SIZE(vseq1), \
|
||||
BOOST_PP_TUPLE_SIZE(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_SIZE_D(d,vseq1,vseq2) \
|
||||
BOOST_PP_NOT_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_SIZE(vseq1), \
|
||||
BOOST_PP_TUPLE_SIZE(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype1,BOOST_VMD_TYPE_TUPLE), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype2,BOOST_VMD_TYPE_TUPLE) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_SIZE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype1,BOOST_VMD_TYPE_TUPLE), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype2,BOOST_VMD_TYPE_TUPLE) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_SIZE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY(...) 1
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(bp1,bp2) \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_PP_BITXOR \
|
||||
( \
|
||||
bp1, \
|
||||
bp2 \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq1), \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_CHK_EMPTY_MATCH(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_COMMON_HPP */
|
||||
21
install/boost_1_75_0/include/boost/vmd/detail/equal_type.hpp
Normal file
21
install/boost_1_75_0/include/boost/vmd/detail/equal_type.hpp
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TYPE_HPP
|
||||
|
||||
#include <boost/vmd/detail/match_single_identifier.hpp>
|
||||
#include <boost/vmd/detail/type_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TYPE(type1,type2) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(type1,type2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,type1,type2) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(type1,type2) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_TYPE_HPP */
|
||||
429
install/boost_1_75_0/include/boost/vmd/detail/identifier.hpp
Normal file
429
install/boost_1_75_0/include/boost/vmd/detail/identifier.hpp
Normal file
@@ -0,0 +1,429 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_IDENTIFIER_HPP)
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/expr_iif.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.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>
|
||||
#include <boost/vmd/detail/is_entire.hpp>
|
||||
#include <boost/vmd/detail/match_identifier.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/parens.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_SUCCESS(id,rest,keymatch,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SUCCESS_MODS(id,rest,BOOST_PP_DEC(keymatch),mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_FAILURE(id,rest,keymatch,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_RESULT(id,rest,keymatch,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(keymatch,0), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_FAILURE, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_SUCCESS \
|
||||
) \
|
||||
(id,rest,keymatch,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_RESULT_D(d,id,rest,keymatch,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,keymatch,0), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_FAILURE, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_SUCCESS \
|
||||
) \
|
||||
(id,rest,keymatch,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE(id,rest,keytuple,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_RESULT \
|
||||
( \
|
||||
id, \
|
||||
rest, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER(id,keytuple), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_D(d,id,rest,keytuple,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_RESULT_D \
|
||||
( \
|
||||
d, \
|
||||
id, \
|
||||
rest, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_D(d,id,keytuple), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_MAKE_SPLIT(tuple) \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM(1,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE_CONCAT_DATA(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(tuple), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_MAKE_SPLIT \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE_CONCAT(vcseq) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE_CONCAT_DATA \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS(vcseq,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_GETID_TID(tid) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(tid), \
|
||||
BOOST_VMD_IDENTITY(tid), \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
) \
|
||||
(0,tid) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_GETID_SEQUENCE(vseq) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_GETID_TID \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS(BOOST_VMD_DETAIL_IDENTIFIER_CONCATENATE(vseq)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE(vseq) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE_CONCAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CONCATENATE(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS(id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE \
|
||||
( \
|
||||
id, \
|
||||
rest, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(mods), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_D(d,id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
id, \
|
||||
rest, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(mods), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_JUST(id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SUCCESS_MODS(id,rest,0,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_JUST_D(d,id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SUCCESS_MODS(id,rest,0,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS(id,rest,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(mods) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_JUST, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS \
|
||||
) \
|
||||
(id,rest,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS_D(d,id,rest,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(mods) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_JUST_D, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_KEYS_D \
|
||||
) \
|
||||
(d,id,rest,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_MKEYS(mods) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(mods), \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(mods) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SUCCESS_MODS(id,rest,keymatch,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_MKEYS(mods), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
(id,rest,keymatch), \
|
||||
(id,keymatch) \
|
||||
), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
(id,rest), \
|
||||
id \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_MKEYS(mods), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
(,,), \
|
||||
(,) \
|
||||
), \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
(,) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST(id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST_D(d,id,rest,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_ID_REST(id,rest,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(id), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS \
|
||||
) \
|
||||
(id,rest,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_ID_REST_D(d,id,rest,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(id), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST_D, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS_D \
|
||||
) \
|
||||
(d,id,rest,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_DATA(tuple,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_ID_REST \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple), \
|
||||
BOOST_PP_TUPLE_ELEM(1,tuple), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_ID(id,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(id), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS \
|
||||
) \
|
||||
(id,,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_ID_D(d,id,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(id), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_REST_D, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CHECK_KEYS_D \
|
||||
) \
|
||||
(d,id,,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_DATA_D(d,tuple,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_ID_REST_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple), \
|
||||
BOOST_PP_TUPLE_ELEM(1,tuple), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_AFTER(vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_DATA \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE(vseq), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_AFTER_D(d,vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_DATA_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SPLIT_SEQUENCE(vseq), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_ID(vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_ID \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_GETID_SEQUENCE(vseq), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_ID_D(d,vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_PROCESS_ID_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_GETID_SEQUENCE(vseq), \
|
||||
mods \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE(vseq,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_AFTER, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_ID \
|
||||
) \
|
||||
(vseq,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_D(d,vseq,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(mods), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_AFTER_D, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_ID_D \
|
||||
) \
|
||||
(d,vseq,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_EX_FAILURE(vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_EX_FAILURE_D(d,vseq,mods) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_FAILURE_MODS(mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_EX(vseq,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(vseq), \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_EX_FAILURE, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE \
|
||||
) \
|
||||
(vseq,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_EX_D(d,vseq,mods) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(vseq), \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_EX_FAILURE_D, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SEQUENCE_D \
|
||||
) \
|
||||
(d,vseq,mods) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER(...) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_EX \
|
||||
( \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_INDEX,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_D(d,...) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_EX_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_INDEX,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_MULTIPLE(...) \
|
||||
BOOST_VMD_DETAIL_IS_ENTIRE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER(__VA_ARGS__,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_MULTIPLE_D(d,...) \
|
||||
BOOST_VMD_DETAIL_IS_ENTIRE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_D(d,__VA_ARGS__,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IDENTIFIER_HPP */
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_IDENTIFIER_CONCAT_HPP)
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_CONCAT_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/vmd/detail/idprefix.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_CONCATENATE(vseq) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_REGISTRATION_PREFIX, \
|
||||
vseq \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IDENTIFIER_CONCAT_HPP */
|
||||
@@ -0,0 +1,118 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_IDENTIFIER_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
#include <boost/vmd/detail/idprefix.hpp>
|
||||
#include <boost/vmd/detail/number_registration.hpp>
|
||||
#include <boost/vmd/detail/type_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCATENATE(id) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_SUBTYPE_REGISTRATION_PREFIX, \
|
||||
id \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_SIZE(cres) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL \
|
||||
( \
|
||||
BOOST_PP_TUPLE_SIZE(cres), \
|
||||
2 \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_IDENTIFIER) \
|
||||
) \
|
||||
(0,cres) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_SIZE_D(d,cres) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_SIZE(cres), \
|
||||
2 \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_IDENTIFIER) \
|
||||
) \
|
||||
(0,cres) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCAT(cres) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(cres), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_SIZE, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_IDENTIFIER) \
|
||||
) \
|
||||
(cres) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCAT_D(d,cres) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(cres), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_SIZE_D, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_IDENTIFIER) \
|
||||
) \
|
||||
(d,cres) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Determines the type of an identifier.
|
||||
|
||||
The type may be that of an identifier or else
|
||||
it may be a subtype.
|
||||
|
||||
Assumes the 'id' is a valid identifier id
|
||||
|
||||
Expands to the appropriate type
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE(id) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCATENATE(id) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_TYPE_D(d,id) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCAT_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_CONCATENATE(id) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IDENTIFIER_TYPE_HPP */
|
||||
14
install/boost_1_75_0/include/boost/vmd/detail/idprefix.hpp
Normal file
14
install/boost_1_75_0/include/boost/vmd/detail/idprefix.hpp
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_IDPREFIX_HPP)
|
||||
#define BOOST_VMD_DETAIL_IDPREFIX_HPP
|
||||
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_DETECTION_PREFIX BOOST_VMD_DETECT_
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_REGISTRATION_PREFIX BOOST_VMD_REGISTER_
|
||||
#define BOOST_VMD_DETAIL_IDENTIFIER_SUBTYPE_REGISTRATION_PREFIX BOOST_VMD_SUBTYPE_REGISTER_
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IDPREFIX_HPP */
|
||||
41
install/boost_1_75_0/include/boost/vmd/detail/is_array.hpp
Normal file
41
install/boost_1_75_0/include/boost/vmd/detail/is_array.hpp
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ARRAY_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
#include <boost/vmd/detail/is_array_common.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY(vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(vseq), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_D(d,vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(vseq), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_ARRAY_HPP */
|
||||
@@ -0,0 +1,248 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ARRAY_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/facilities/empty.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_number.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
#include <boost/vmd/detail/is_empty_tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(2,BOOST_PP_TUPLE_SIZE(tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_ARRAY_FORM, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,2,BOOST_PP_TUPLE_SIZE(tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_ARRAY_FORM_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Check if the first element of the tuple is equal to the number of tuple elements of the second element
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_SIZE(x) \
|
||||
BOOST_PP_EQUAL(BOOST_PP_TUPLE_ELEM(0,x),BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_ELEM(1,x))) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_SIZE_D(d,x) \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_ELEM(0,x),BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_ELEM(1,x))) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_EMPTY(tuple) \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE(BOOST_PP_TUPLE_ELEM(1,tuple)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_EMPTY_D(d,tuple) \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE(BOOST_PP_TUPLE_ELEM(1,tuple)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH(tuple) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_SIZE, \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_EMPTY \
|
||||
) \
|
||||
(tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_D(d,tuple) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_SIZE_D, \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_EMPTY_D \
|
||||
) \
|
||||
(d,tuple) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Check if the first element is numeric
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_NUM(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_NUM(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_MATCH_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMBER(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_NUMBER(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMBER_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_NUMBER(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMERIC_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Check if the second element is a tuple
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_ARRAY_FORM(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(BOOST_PP_TUPLE_ELEM(1,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMBER, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_CHECK_ARRAY_FORM_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(BOOST_PP_TUPLE_ELEM(1,tuple)), \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_CHECK_NUMBER_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM(x) BOOST_VMD_IS_EMPTY(BOOST_PP_CAT(BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_, x) BOOST_PP_EMPTY())
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_0
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_1
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_2
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_3
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_4
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_5
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_6
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_7
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_8
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_9
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_10
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_11
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_12
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_13
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_14
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_15
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_16
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_17
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_18
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_19
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_20
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_21
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_22
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_23
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_24
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_25
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_26
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_27
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_28
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_29
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_30
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_31
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_32
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_33
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_34
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_35
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_36
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_37
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_38
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_39
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_40
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_41
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_42
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_43
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_44
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_45
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_46
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_47
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_48
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_49
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_50
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_51
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_52
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_53
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_54
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_55
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_56
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_57
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_58
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_59
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_60
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_61
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_62
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_63
|
||||
#define BOOST_VMD_DETAIL_IS_ARRAY_NUM_HELPER_64
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_ARRAY_COMMON_HPP */
|
||||
61
install/boost_1_75_0/include/boost/vmd/detail/is_empty.hpp
Normal file
61
install/boost_1_75_0/include/boost/vmd/detail/is_empty.hpp
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EMPTY_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_HPP
|
||||
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
|
||||
#if BOOST_VMD_MSVC
|
||||
|
||||
# pragma warning(once:4002)
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_IIF_0(t, b) b
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_IIF_1(t, b) t
|
||||
|
||||
#if BOOST_VMD_MSVC_V8
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(param) \
|
||||
BOOST_PP_IS_BEGIN_PARENS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(...) \
|
||||
BOOST_PP_IS_BEGIN_PARENS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_IIF_1(t, ...) t
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(...) \
|
||||
BOOST_PP_IS_BEGIN_PARENS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_MSVC */
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_IIF(bit) \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(BOOST_VMD_DETAIL_IS_EMPTY_IIF_,bit) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) ()
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_GEN_ZERO(...) 0
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_EMPTY_HPP */
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EMPTY_ARRAY_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_ARRAY_HPP
|
||||
|
||||
#include <boost/preprocessor/array/size.hpp>
|
||||
#include <boost/preprocessor/logical/not.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_ARRAY_SIZE(array) \
|
||||
BOOST_PP_NOT \
|
||||
( \
|
||||
BOOST_PP_ARRAY_SIZE(array) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_EMPTY_ARRAY_HPP */
|
||||
@@ -0,0 +1,74 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EMPTY_TUPLE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_HPP
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM(tuple) \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple),1), \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_SIZE(tuple),1), \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_CEM, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE(tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(tuple), \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_D(d,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(tuple), \
|
||||
BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_SIZE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_EMPTY_TUPLE_HPP */
|
||||
23
install/boost_1_75_0/include/boost/vmd/detail/is_entire.hpp
Normal file
23
install/boost_1_75_0/include/boost/vmd/detail/is_entire.hpp
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ENTIRE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_ENTIRE_HPP
|
||||
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ENTIRE(tuple) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1,tuple)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_ENTIRE_HPP */
|
||||
@@ -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 */
|
||||
@@ -0,0 +1,96 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_IDENTIFIER_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_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/tuple/elem.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/is_tuple.hpp>
|
||||
#include <boost/vmd/detail/identifier.hpp>
|
||||
#include <boost/vmd/detail/identifier_concat.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ_MATCH(tup) \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tup) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ_TUPLE(ptup) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(ptup), \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ_MATCH, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(ptup) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ_ID(vseq) \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_CONCATENATE(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_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_IDENTIFIER_VSEQ_ID \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE(...) \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE_D(d,...) \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_VSEQ(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),1), \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE, \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_MULTIPLE \
|
||||
) \
|
||||
(__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_IDENTIFIER_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),1), \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE_D, \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_MULTIPLE_D \
|
||||
) \
|
||||
(d,__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_IDENTIFIER_HPP */
|
||||
207
install/boost_1_75_0/include/boost/vmd/detail/is_list.hpp
Normal file
207
install/boost_1_75_0/include/boost/vmd/detail/is_list.hpp
Normal file
@@ -0,0 +1,207 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_LIST_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/debug/assert.hpp>
|
||||
#include <boost/preprocessor/facilities/empty.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_identifier.hpp>
|
||||
#include <boost/vmd/is_tuple.hpp>
|
||||
#include <boost/vmd/detail/nil_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PROCESS_TUPLE(d,x) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_TUPLE(x), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PROCESS_TUPLE_SIZE, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_ASSERT \
|
||||
) \
|
||||
(d,x) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PROCESS_TUPLE_SIZE(d,x) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,2,BOOST_PP_TUPLE_SIZE(x)), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_RETURN_SECOND, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_ASSERT \
|
||||
) \
|
||||
(x) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PRED(d,state) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(state), \
|
||||
BOOST_VMD_IDENTITY(1), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_NOT_BOOST_PP_NIL \
|
||||
) \
|
||||
(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_OP(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(state), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PROCESS_TUPLE, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PROCESS_IF_BOOST_PP_NIL \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PROCESS_IF_BOOST_PP_NIL(d,x) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_BOOST_PP_NIL(x), \
|
||||
BOOST_PP_NIL, \
|
||||
BOOST_VMD_IS_LIST_FAILURE \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_ASSERT(...) \
|
||||
BOOST_VMD_IS_LIST_FAILURE \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_NOT_BOOST_PP_NIL(x) \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_BOOST_PP_NIL(x), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_IS_FAILURE(x) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_BOOST_PP_NIL(x) \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_NIL_HELPER_, \
|
||||
x \
|
||||
) BOOST_PP_EMPTY() \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_NIL_HELPER_BOOST_PP_NIL
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_IS_FAILURE(x) \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_CAT(BOOST_VMD_DETAIL_IS_LIST_FHELPER_,x) BOOST_PP_EMPTY() \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_FHELPER_BOOST_VMD_IS_LIST_FAILURE
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_RETURN_SECOND(x) \
|
||||
BOOST_PP_TUPLE_ELEM(1,x) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_RESULT(x) \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_IS_FAILURE(x) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_WLOOP(list) \
|
||||
BOOST_VMD_DETAIL_IS_LIST_RESULT \
|
||||
( \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PRED, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_OP, \
|
||||
list \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_WLOOP_D(d,list) \
|
||||
BOOST_VMD_DETAIL_IS_LIST_RESULT \
|
||||
( \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PRED, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_OP, \
|
||||
list \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS(list) \
|
||||
BOOST_VMD_IS_IDENTIFIER(list,BOOST_PP_NIL) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS_D(d,list) \
|
||||
BOOST_VMD_IS_IDENTIFIER_D(d,list,BOOST_PP_NIL) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PROCESS(param) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(param), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_WLOOP, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS \
|
||||
) \
|
||||
(param) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST(param) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(param), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PROCESS \
|
||||
) \
|
||||
(param) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_PROCESS_D(d,param) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(param), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_WLOOP_D, \
|
||||
BOOST_VMD_DETAIL_IS_LIST_IS_EMPTY_LIST_PROCESS_D \
|
||||
) \
|
||||
(d,param) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_LIST_D(d,param) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(param), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_IS_LIST_PROCESS_D \
|
||||
) \
|
||||
(d,param) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_LIST_HPP */
|
||||
38
install/boost_1_75_0/include/boost/vmd/detail/is_number.hpp
Normal file
38
install/boost_1_75_0/include/boost/vmd/detail/is_number.hpp
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_NUMBER_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_NUMBER_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/identifier_type.hpp>
|
||||
#include <boost/vmd/detail/is_identifier.hpp>
|
||||
#include <boost/vmd/detail/number_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_NUMBER_TYPE(vseq) \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_NUMBER, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_NUMBER(vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE(vseq), \
|
||||
BOOST_VMD_DETAIL_IS_NUMBER_TYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_NUMBER_HPP */
|
||||
27
install/boost_1_75_0/include/boost/vmd/detail/is_seq.hpp
Normal file
27
install/boost_1_75_0/include/boost/vmd/detail/is_seq.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQ_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_SEQ_HPP
|
||||
|
||||
#include <boost/vmd/detail/is_entire.hpp>
|
||||
#include <boost/vmd/detail/seq.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_SEQ(seq) \
|
||||
BOOST_VMD_DETAIL_IS_ENTIRE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQ_SPLIT(seq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_SEQ_D(d,seq) \
|
||||
BOOST_VMD_DETAIL_IS_ENTIRE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQ_SPLIT_D(d,seq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_SEQ_HPP */
|
||||
20
install/boost_1_75_0/include/boost/vmd/detail/is_tuple.hpp
Normal file
20
install/boost_1_75_0/include/boost/vmd/detail/is_tuple.hpp
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_TUPLE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_TUPLE_HPP
|
||||
|
||||
#include <boost/vmd/detail/is_entire.hpp>
|
||||
#include <boost/vmd/detail/parens_split.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TUPLE(vseq) \
|
||||
BOOST_VMD_DETAIL_IS_ENTIRE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS_SPLIT(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_TUPLE_HPP */
|
||||
57
install/boost_1_75_0/include/boost/vmd/detail/is_type.hpp
Normal file
57
install/boost_1_75_0/include/boost/vmd/detail/is_type.hpp
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/identifier_type.hpp>
|
||||
#include <boost/vmd/detail/is_type_type.hpp>
|
||||
#include <boost/vmd/detail/is_identifier.hpp>
|
||||
#include <boost/vmd/detail/type_registration.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE(vseq) \
|
||||
BOOST_VMD_DETAIL_IS_TYPE_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE_D(d,vseq) \
|
||||
BOOST_VMD_DETAIL_IS_TYPE_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_D(d,vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE(vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE(vseq), \
|
||||
BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_D(d,vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE_D(d,vseq), \
|
||||
BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_TYPE_HPP */
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_TYPE_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_TYPE_HPP
|
||||
|
||||
#include <boost/vmd/detail/type_registration.hpp>
|
||||
#include <boost/vmd/detail/match_single_identifier.hpp>
|
||||
|
||||
/*
|
||||
|
||||
Check to see if the 'id' is BOOST_VMD_TYPE_TYPE
|
||||
|
||||
Returns 1 if it is, else 0
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_TYPE_TYPE(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_TYPE_TYPE) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_IS_TYPE_TYPE_HPP */
|
||||
212
install/boost_1_75_0/include/boost/vmd/detail/list.hpp
Normal file
212
install/boost_1_75_0/include/boost/vmd/detail/list.hpp
Normal file
@@ -0,0 +1,212 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_LIST_HPP)
|
||||
#define BOOST_VMD_DETAIL_LIST_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/pop_back.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/identifier.hpp>
|
||||
#include <boost/vmd/detail/is_list.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/parens.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_CHECK_FOR_LIST(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
tuple, \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_CHECK_FOR_LIST_D(d,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
tuple, \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_CHECK_RETURN(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_LIST_CHECK_FOR_LIST \
|
||||
) \
|
||||
(tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_CHECK_RETURN_D(d,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
tuple \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_LIST_CHECK_FOR_LIST_D \
|
||||
) \
|
||||
(d,tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_EMPTY_LIST(list) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER(list,BOOST_PP_NIL,BOOST_VMD_RETURN_AFTER,BOOST_VMD_RETURN_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_EMPTY_LIST_D(d,list) \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_D(d,list,BOOST_PP_NIL,BOOST_VMD_RETURN_AFTER,BOOST_VMD_RETURN_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_TUPLE(param) \
|
||||
BOOST_VMD_DETAIL_LIST_CHECK_RETURN \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS(param,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_TUPLE_D(d,param) \
|
||||
BOOST_VMD_DETAIL_LIST_CHECK_RETURN_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_PARENS_D(d,param,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_EMPTY_PROCESS(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
), \
|
||||
(,), \
|
||||
tuple \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_EMPTY(list) \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY_PROCESS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY_LIST(list) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_EMPTY_D(d,list) \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY_PROCESS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY_LIST_D(d,list) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_PROCESS(list) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(list), \
|
||||
BOOST_VMD_DETAIL_LIST_TUPLE, \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY \
|
||||
) \
|
||||
(list) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_SPLIT(list) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(list), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_LIST_PROCESS \
|
||||
) \
|
||||
(list) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_BEGIN(list) \
|
||||
BOOST_PP_TUPLE_ELEM(0,BOOST_VMD_DETAIL_LIST_SPLIT(list)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_PROCESS_D(d,list) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(list), \
|
||||
BOOST_VMD_DETAIL_LIST_TUPLE_D, \
|
||||
BOOST_VMD_DETAIL_LIST_EMPTY_D \
|
||||
) \
|
||||
(d,list) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_SPLIT_D(d,list) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(list), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_LIST_PROCESS_D \
|
||||
) \
|
||||
(d,list) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_BEGIN_D(d,list) \
|
||||
BOOST_PP_TUPLE_ELEM(0,BOOST_VMD_DETAIL_LIST_SPLIT_D(d,list)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_LIST_SPLIT_D, \
|
||||
BOOST_VMD_DETAIL_LIST_BEGIN_D \
|
||||
) \
|
||||
(d,BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_LIST(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_LIST_SPLIT, \
|
||||
BOOST_VMD_DETAIL_LIST_BEGIN \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_LIST_HPP */
|
||||
@@ -0,0 +1,160 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_MATCH_IDENTIFIER_HPP)
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/inc.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/comparison/not_equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/replace.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/idprefix.hpp>
|
||||
#include <boost/vmd/detail/match_identifier_common.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_ID(state) \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_TUPLE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(1,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_TUPLE_SIZE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(2,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_CURRENT(state) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_INDEX(state), \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_TUPLE(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_INDEX(state) \
|
||||
BOOST_PP_TUPLE_ELEM(3,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_RESULT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(4,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_PRED(d,state) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_RESULT(state), \
|
||||
0 \
|
||||
), \
|
||||
BOOST_PP_NOT_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_INDEX(state), \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_TUPLE_SIZE(state) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_FOUND(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
4, \
|
||||
BOOST_PP_INC \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_INDEX(state) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CONTINUE(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
3, \
|
||||
BOOST_PP_INC \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_INDEX(state) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CMP_IDS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_ID(state), \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_STATE_KEY_CURRENT(state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_FOUND, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CONTINUE \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Return index starting with 1 of the tuple id the identifier matches, or 0 if there are no matches.
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER(id,keytuple) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
4, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_PRED, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP, \
|
||||
( \
|
||||
id, \
|
||||
keytuple, \
|
||||
BOOST_PP_TUPLE_SIZE(keytuple), \
|
||||
0, \
|
||||
0 \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Return index starting with 1 of the tuple id the identifier matches, or 0 if there are no matches.
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_D(d,id,keytuple) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
4, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_PRED, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP, \
|
||||
( \
|
||||
id, \
|
||||
keytuple, \
|
||||
BOOST_PP_TUPLE_SIZE(keytuple), \
|
||||
0, \
|
||||
0 \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_MATCH_IDENTIFIER_HPP */
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_MATCH_IDENTIFIER_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/idprefix.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CREATE_ID_RESULT(id,keyid) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_DETECTION_PREFIX, \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
keyid, \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
_, \
|
||||
id \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CMP_IDS(id,keyid) \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CREATE_ID_RESULT(id,keyid) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_MATCH_IDENTIFIER_COMMON_HPP */
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_MATCH_SINGLE_IDENTIFIER_HPP)
|
||||
#define BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER_HPP
|
||||
|
||||
#include <boost/vmd/detail/match_identifier_common.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,key) \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_OP_CMP_IDS(id,key) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER_HPP */
|
||||
104
install/boost_1_75_0/include/boost/vmd/detail/modifiers.hpp
Normal file
104
install/boost_1_75_0/include/boost/vmd/detail/modifiers.hpp
Normal file
@@ -0,0 +1,104 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_MODIFIERS_HPP)
|
||||
#define BOOST_VMD_DETAIL_MODIFIERS_HPP
|
||||
|
||||
#include <boost/vmd/detail/match_single_identifier.hpp>
|
||||
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_NO_TYPE (BOOST_VMD_RETURN_NO_TYPE)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_TYPE (BOOST_VMD_RETURN_TYPE)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_TYPE_TUPLE (BOOST_VMD_RETURN_TYPE_TUPLE)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_TYPE_ARRAY (BOOST_VMD_RETURN_TYPE_ARRAY)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_TYPE_LIST (BOOST_VMD_RETURN_TYPE_LIST)
|
||||
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_AFTER (BOOST_VMD_RETURN_AFTER)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_NO_AFTER (BOOST_VMD_RETURN_NO_AFTER)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_ONLY_AFTER (BOOST_VMD_RETURN_ONLY_AFTER)
|
||||
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_INDEX (BOOST_VMD_RETURN_INDEX)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_RETURN_NO_INDEX (BOOST_VMD_RETURN_NO_INDEX)
|
||||
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_NO_TYPE_BOOST_VMD_RETURN_NO_TYPE
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_TYPE_BOOST_VMD_RETURN_TYPE
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_TYPE_TUPLE_BOOST_VMD_RETURN_TYPE_TUPLE
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_TYPE_ARRAY_BOOST_VMD_RETURN_TYPE_ARRAY
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_TYPE_LIST_BOOST_VMD_RETURN_TYPE_LIST
|
||||
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_AFTER_BOOST_VMD_RETURN_AFTER
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_NO_AFTER_BOOST_VMD_RETURN_NO_AFTER
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_ONLY_AFTER_BOOST_VMD_RETURN_ONLY_AFTER
|
||||
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_INDEX_BOOST_VMD_RETURN_INDEX
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_RETURN_NO_INDEX_BOOST_VMD_RETURN_NO_INDEX
|
||||
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_ALLOW_ALL (BOOST_VMD_ALLOW_ALL)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_ALLOW_RETURN (BOOST_VMD_ALLOW_RETURN)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_ALLOW_AFTER (BOOST_VMD_ALLOW_AFTER)
|
||||
#define BOOST_VMD_REGISTER_BOOST_VMD_ALLOW_INDEX (BOOST_VMD_ALLOW_INDEX)
|
||||
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_ALLOW_ALL_BOOST_VMD_ALLOW_ALL
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_ALLOW_RETURN_BOOST_VMD_ALLOW_RETURN
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_ALLOW_AFTER_BOOST_VMD_ALLOW_AFTER
|
||||
#define BOOST_VMD_DETECT_BOOST_VMD_ALLOW_INDEX_BOOST_VMD_ALLOW_INDEX
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_TYPE_TUPLE(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_TYPE_ARRAY(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_TYPE_ARRAY) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_TYPE_LIST(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_TYPE_LIST) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_TYPE(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_TYPE) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_NO_TYPE(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_NO_TYPE) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_AFTER(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_AFTER) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_ONLY_AFTER(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_ONLY_AFTER) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_NO_AFTER(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_NO_AFTER) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_INDEX(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_RETURN_NO_INDEX(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_RETURN_NO_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ALLOW_ALL(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_ALLOW_ALL) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ALLOW_RETURN(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_ALLOW_RETURN) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ALLOW_AFTER(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_ALLOW_AFTER) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_ALLOW_INDEX(id) \
|
||||
BOOST_VMD_DETAIL_MATCH_SINGLE_IDENTIFIER(id,BOOST_VMD_ALLOW_INDEX) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_MODIFIERS_HPP */
|
||||
707
install/boost_1_75_0/include/boost/vmd/detail/mods.hpp
Normal file
707
install/boost_1_75_0/include/boost/vmd/detail/mods.hpp
Normal file
@@ -0,0 +1,707 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_MODS_HPP)
|
||||
#define BOOST_VMD_DETAIL_MODS_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/inc.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/comparison/greater.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/pop_front.hpp>
|
||||
#include <boost/preprocessor/tuple/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/replace.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/preprocessor/variadic/to_tuple.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_type.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_NO_RETURN 0
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN 1
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_TUPLE 2
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_ARRAY 3
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_LIST 4
|
||||
#define BOOST_VMD_DETAIL_MODS_NO_AFTER 0
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_AFTER 1
|
||||
#define BOOST_VMD_DETAIL_MODS_NO_INDEX 0
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_INDEX 1
|
||||
#define BOOST_VMD_DETAIL_MODS_NO_ONLY_AFTER 0
|
||||
#define BOOST_VMD_DETAIL_MODS_RETURN_ONLY_AFTER 1
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_RETURN 0
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_AFTER 1
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_INDEX 2
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_OTHER 3
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_ONLY_AFTER 4
|
||||
#define BOOST_VMD_DETAIL_MODS_TUPLE_TYPE 5
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_DATA_INPUT 0
|
||||
#define BOOST_VMD_DETAIL_MODS_DATA_INDEX 1
|
||||
#define BOOST_VMD_DETAIL_MODS_DATA_SIZE 2
|
||||
#define BOOST_VMD_DETAIL_MODS_DATA_RESULT 3
|
||||
#define BOOST_VMD_DETAIL_MODS_DATA_ALLOW 4
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_INPUT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_DATA_INPUT,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_INDEX(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_DATA_INDEX,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_SIZE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_DATA_SIZE,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_RESULT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_DATA_RESULT,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_ALLOW(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_DATA_ALLOW,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_ALL(state) \
|
||||
BOOST_VMD_DETAIL_IS_ALLOW_ALL(BOOST_VMD_DETAIL_MODS_STATE_ALLOW(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_RETURN(state) \
|
||||
BOOST_VMD_DETAIL_IS_ALLOW_RETURN(BOOST_VMD_DETAIL_MODS_STATE_ALLOW(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_AFTER(state) \
|
||||
BOOST_VMD_DETAIL_IS_ALLOW_AFTER(BOOST_VMD_DETAIL_MODS_STATE_ALLOW(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_INDEX(state) \
|
||||
BOOST_VMD_DETAIL_IS_ALLOW_INDEX(BOOST_VMD_DETAIL_MODS_STATE_ALLOW(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_CURRENT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_STATE_INDEX(state),BOOST_VMD_DETAIL_MODS_STATE_INPUT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_TYPE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_RETURN,BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_AFTER(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_AFTER,BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_ONLY_AFTER(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_ONLY_AFTER,BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_STATE_TINDEX(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_INDEX,BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_RESULT_RETURN_TYPE(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_RETURN,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_AFTER,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_ONLY_AFTER,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_INDEX,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_RESULT_OTHER(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_OTHER,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_RESULT_TYPE(result) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_MODS_TUPLE_TYPE,result) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_PRED(d,state) \
|
||||
BOOST_PP_GREATER_D(d,BOOST_VMD_DETAIL_MODS_STATE_SIZE(state),BOOST_VMD_DETAIL_MODS_STATE_INDEX(state))
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,number) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_RETURN, \
|
||||
number \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ONLY_AFTER(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_ONLY_AFTER, \
|
||||
1 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_AFTER, \
|
||||
1 \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_INDEX(d,state,number) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_INDEX, \
|
||||
number \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_GTT(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,BOOST_VMD_DETAIL_MODS_RETURN_TUPLE) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ET(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,BOOST_VMD_DETAIL_MODS_RETURN) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_SA(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,BOOST_VMD_DETAIL_MODS_RETURN_ARRAY) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_SL(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,BOOST_VMD_DETAIL_MODS_RETURN_LIST) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_NT(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_RETURN_TYPE(d,state,BOOST_VMD_DETAIL_MODS_NO_RETURN) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_AFT(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_AFTER, \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_AFTER \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_NOAFT(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_ONLY_AFTER, \
|
||||
0 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_AFTER, \
|
||||
BOOST_VMD_DETAIL_MODS_NO_AFTER \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_IND(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_INDEX(d,state,BOOST_VMD_DETAIL_MODS_RETURN_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_NO_IND(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_INDEX(d,state,BOOST_VMD_DETAIL_MODS_NO_INDEX) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE_REPLACE(d,state,id) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_OTHER, \
|
||||
BOOST_PP_VARIADIC_TO_TUPLE(id) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE_ADD(d,state,id) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_OTHER, \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)), \
|
||||
id \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(BOOST_VMD_DETAIL_MODS_STATE_RESULT(state)) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE_REPLACE, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE_ADD \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_TYPE_RETURN(d,state,id) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_RETURN, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,id,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_ARRAY, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,id,BOOST_VMD_TYPE_LIST), \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_LIST, \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_TUPLE \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_TYPE(d,state,id) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_TYPE_RETURN(d,state,id), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_TYPE, \
|
||||
id \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_ALL(state), \
|
||||
BOOST_VMD_IS_TYPE_D(d,id) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_TYPE, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN_CTUPLE \
|
||||
) \
|
||||
(d,state,id) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE(d,state) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_INDEX, \
|
||||
BOOST_PP_INC(BOOST_VMD_DETAIL_MODS_STATE_INDEX(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_ALL(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_TUPLE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_GTT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ET, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_ARRAY(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_SA, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_LIST(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_SL, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_TYPE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_AFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NOAFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_ONLY_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ONLY_AFTER, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_INDEX(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_IND, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_INDEX(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NO_IND, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_RETURN(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_TUPLE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_GTT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ET, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_ARRAY(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_SA, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_TYPE_LIST(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_SL, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_TYPE(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NT, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_AFTER(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_AFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NOAFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_ONLY_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ONLY_AFTER, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_INDEX(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_AFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NOAFT, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_ONLY_AFTER(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ONLY_AFTER, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_INDEX(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_IND, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_RETURN_NO_INDEX(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_NO_IND, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UNKNOWN \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_UPDATE(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_ID(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_ALL(state), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_ALL, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_RETURN(state), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_RETURN, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_AFTER(state), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_AFTER, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_IS_ALLOW_INDEX(state), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_INDEX, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ALLOW_UPDATE \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT_TUPLE(d,state,id) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_UPDATE \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_MODS_DATA_RESULT, \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_MODS_TUPLE_OTHER, \
|
||||
id \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP_CURRENT(d,state,id) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(id), \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_TUPLE, \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT_ID \
|
||||
) \
|
||||
(d,state,id) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_MODS_OP_CURRENT(d,state,BOOST_VMD_DETAIL_MODS_STATE_CURRENT(state)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_LOOP(allow,tuple) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
3, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_PRED, \
|
||||
BOOST_VMD_DETAIL_MODS_OP, \
|
||||
( \
|
||||
tuple, \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_SIZE(tuple), \
|
||||
(0,0,0,,0,), \
|
||||
allow \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_MODS_LOOP_D(d,allow,tuple) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
3, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_PRED, \
|
||||
BOOST_VMD_DETAIL_MODS_OP, \
|
||||
( \
|
||||
tuple, \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_SIZE(tuple), \
|
||||
(0,0,0,,0,), \
|
||||
allow \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS_VAR(allow,tuple) \
|
||||
BOOST_VMD_DETAIL_MODS_LOOP \
|
||||
( \
|
||||
allow, \
|
||||
BOOST_PP_TUPLE_POP_FRONT(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS_VAR_D(d,allow,tuple) \
|
||||
BOOST_VMD_DETAIL_MODS_LOOP_D \
|
||||
( \
|
||||
d, \
|
||||
allow, \
|
||||
BOOST_PP_TUPLE_POP_FRONT(tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS_IR(allow,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(tuple),1), \
|
||||
BOOST_VMD_IDENTITY((0,0,0,,0,)), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_VAR \
|
||||
) \
|
||||
(allow,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS_IR_D(d,allow,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_SIZE(tuple),1), \
|
||||
BOOST_VMD_IDENTITY((0,0,0,,0,)), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_VAR_D \
|
||||
) \
|
||||
(d,allow,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Returns a six-element tuple:
|
||||
|
||||
First tuple element = 0 No type return
|
||||
1 Exact type return
|
||||
2 General tuple type return
|
||||
3 Array return
|
||||
4 List return
|
||||
|
||||
Second tuple element = 0 No after return
|
||||
1 After return
|
||||
|
||||
Third tuple element = 0 No identifier index
|
||||
1 Identifier Index
|
||||
|
||||
Fourth tuple element = Tuple of other identifiers
|
||||
|
||||
Fifth tuple element = 0 No after only return
|
||||
1 After only return
|
||||
|
||||
Sixth tuple element = Type identifier
|
||||
|
||||
Input = allow, either
|
||||
BOOST_VMD_ALLOW_ALL
|
||||
BOOST_VMD_ALLOW_RETURN
|
||||
BOOST_VMD_ALLOW_AFTER
|
||||
BOOST_VMD_ALLOW_INDEX
|
||||
|
||||
..., modifiers, first variadic is discarded
|
||||
Possible modifiers are:
|
||||
|
||||
BOOST_VMD_RETURN_NO_TYPE = (0,0)
|
||||
BOOST_VMD_RETURN_TYPE = (1,0)
|
||||
BOOST_VMD_RETURN_TYPE_TUPLE = (2,0)
|
||||
BOOST_VMD_RETURN_TYPE_ARRAY = (3,0)
|
||||
BOOST_VMD_RETURN_TYPE_LIST = (4,0)
|
||||
|
||||
BOOST_VMD_RETURN_NO_AFTER = (0,0)
|
||||
BOOST_VMD_RETURN_AFTER = (0,1)
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS(allow,...) \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_IR(allow,BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_NEW_MODS_D(d,allow,...) \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_IR_D(d,allow,BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_MODS_HPP */
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_NIL_REGISTRATION_HPP)
|
||||
#define BOOST_VMD_DETAIL_NIL_REGISTRATION_HPP
|
||||
|
||||
#define BOOST_VMD_REGISTER_BOOST_PP_NIL (BOOST_PP_NIL)
|
||||
#define BOOST_VMD_DETECT_BOOST_PP_NIL_BOOST_PP_NIL
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_NIL_REGISTRATION_HPP */
|
||||
20
install/boost_1_75_0/include/boost/vmd/detail/not_empty.hpp
Normal file
20
install/boost_1_75_0/include/boost/vmd/detail/not_empty.hpp
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_NOT_EMPTY_HPP)
|
||||
#define BOOST_VMD_DETAIL_NOT_EMPTY_HPP
|
||||
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_NOT_EMPTY(par) \
|
||||
BOOST_PP_COMPL \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(par) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_NOT_EMPTY_HPP */
|
||||
File diff suppressed because it is too large
Load Diff
37
install/boost_1_75_0/include/boost/vmd/detail/only_after.hpp
Normal file
37
install/boost_1_75_0/include/boost/vmd/detail/only_after.hpp
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_ONLY_AFTER_HPP)
|
||||
#define BOOST_VMD_DETAIL_ONLY_AFTER_HPP
|
||||
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
|
||||
/*
|
||||
|
||||
Determines whether or not the BOOST_VMD_RETURN_ONLY_AFTER modifiers has been passed
|
||||
as a variadic parameter.
|
||||
|
||||
Returns 1 = BOOST_VMD_RETURN_ONLY_AFTER has been passed
|
||||
0 = BOOST_VMD_RETURN_ONLY_AFTER has not been passed
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ONLY_AFTER(...) \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_ONLY_AFTER_D(d,...) \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_ONLY_AFTER_HPP */
|
||||
54
install/boost_1_75_0/include/boost/vmd/detail/parens.hpp
Normal file
54
install/boost_1_75_0/include/boost/vmd/detail/parens.hpp
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_PARENS_HPP)
|
||||
#define BOOST_VMD_DETAIL_PARENS_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/parens_split.hpp>
|
||||
#include <boost/vmd/detail/parens_common.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_PARENS_PROCESS(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_BEGIN_PARENS, \
|
||||
BOOST_VMD_EMPTY \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_PARENS(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_PARENS_SPLIT, \
|
||||
BOOST_VMD_DETAIL_PARENS_PROCESS \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_PARENS_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_PARENS_SPLIT, \
|
||||
BOOST_VMD_DETAIL_PARENS_PROCESS \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_PARENS_HPP */
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_PARENS_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_PARENS_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/facilities/expand.hpp>
|
||||
#include <boost/preprocessor/punctuation/paren.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_BEGIN_PARENS_EXP2(...) ( __VA_ARGS__ ) BOOST_VMD_EMPTY BOOST_PP_LPAREN()
|
||||
#define BOOST_VMD_DETAIL_BEGIN_PARENS_EXP1(vseq) BOOST_VMD_DETAIL_BEGIN_PARENS_EXP2 vseq BOOST_PP_RPAREN()
|
||||
#define BOOST_VMD_DETAIL_BEGIN_PARENS(vseq) BOOST_PP_EXPAND(BOOST_VMD_DETAIL_BEGIN_PARENS_EXP1(vseq))
|
||||
|
||||
#define BOOST_VMD_DETAIL_AFTER_PARENS_DATA(vseq) BOOST_VMD_EMPTY vseq
|
||||
#define BOOST_VMD_DETAIL_SPLIT_PARENS(vseq) (BOOST_VMD_DETAIL_BEGIN_PARENS(vseq),BOOST_VMD_DETAIL_AFTER_PARENS_DATA(vseq))
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_PARENS_COMMON_HPP */
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_PARENS_SPLIT_HPP)
|
||||
#define BOOST_VMD_DETAIL_PARENS_SPLIT_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/parens_common.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_PARENS_SPLIT(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_SPLIT_PARENS, \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
#endif /* BOOST_VMD_DETAIL_PARENS_SPLIT_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_1_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_1_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_10_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_10_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_11_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_11_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_12_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_12_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_13_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_13_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_14_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_15_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_15_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_16_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_16_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_2_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_2_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_3_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_3_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_4_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_4_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_5_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_5_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_6_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_6_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_7_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_7_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_8_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_8_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_9_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_9_HPP */
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_HEADERS_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_HEADERS_HPP
|
||||
|
||||
#include <boost/preprocessor/array/size.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/list/size.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/equal.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/data_equal_common.hpp>
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_HEADERS_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_DATA_EQUAL_SPECIFIC_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_1_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_1_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_1_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_1_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_10_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_10_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_10_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_10_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_11_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_11_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_11_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_11_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_12_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_12_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_12_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_12_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_13_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_13_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_13_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_13_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_14_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_14_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_14_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_14_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_15_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_15_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_15_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_15_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_16_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_16_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_16_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_16_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_2_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_2_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_2_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_2_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_3_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_3_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_3_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_3_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_4_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_4_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_4_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_4_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_5_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_5_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_5_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_5_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_6_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_6_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_6_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_6_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_7_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_7_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_7_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_7_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_8_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_8_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_8_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_8_HPP */
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_9_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/equal/equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_CNI_CHK(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_CNI_CHK_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_ARRAY), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_LIST) \
|
||||
), \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,vtype,BOOST_VMD_TYPE_TUPLE) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_CNI_SMP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_VSEQ(vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9 \
|
||||
( \
|
||||
BOOST_VMD_TO_SEQ(vseq1), \
|
||||
BOOST_VMD_TO_SEQ(vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_VSEQ_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq1), \
|
||||
BOOST_VMD_TO_SEQ_D(d,vseq2), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_CNI(vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_VSEQ, \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_CNI_CHK \
|
||||
) \
|
||||
(vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_CNI_D(d,vseq1,vseq2,vtype) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype, \
|
||||
BOOST_VMD_TYPE_SEQUENCE \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_VSEQ_D, \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_CNI_CHK_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT_CHECK(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_CNI, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT_CHECK_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
vtype1, \
|
||||
vtype2 \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_CNI_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT_CONVERT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT_CHECK \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE(vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT_CONVERT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT_CHECK_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq1,vtype1), \
|
||||
BOOST_VMD_DETAIL_ADJUST_TUPLE_TYPE_D(d,vseq2,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT(vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH(vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT_CONVERT \
|
||||
) \
|
||||
(vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_WT_D(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_IS_TUPLE_MISMATCH_D(d,vseq1,vseq2,vtype1,vtype2), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT_CONVERT_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,vtype1,vtype2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_GTYPE(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE(vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE(vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_GTYPE_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_WT_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq1,BOOST_VMD_RETURN_TYPE_TUPLE), \
|
||||
BOOST_VMD_GET_TYPE_D(d,vseq2,BOOST_VMD_RETURN_TYPE_TUPLE) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_EBP(vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_GTYPE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_EBP_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_MATCH(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_CHK_PARENS_MATCH(vseq1,vseq2) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_GTYPE_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq1,vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_EMPTY(vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_EBP \
|
||||
) \
|
||||
(vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_EMPTY_D(d,vseq1,vseq2,be1,be2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITAND(be1,be2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_BOTH_EMPTY, \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_EBP_D \
|
||||
) \
|
||||
(d,vseq1,vseq2,be1,be2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9(vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_EMPTY \
|
||||
( \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_EQUAL_9_D(d,vseq1,vseq2) \
|
||||
BOOST_VMD_DETAIL_EQUAL_9_EMPTY_D \
|
||||
( \
|
||||
d, \
|
||||
vseq1, \
|
||||
vseq2, \
|
||||
BOOST_VMD_IS_EMPTY(vseq1), \
|
||||
BOOST_VMD_IS_EMPTY(vseq2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_9_HPP */
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_EQUAL_HEADERS_HPP)
|
||||
#define BOOST_VMD_DETAIL_EQUAL_HEADERS_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/vmd/to_seq.hpp>
|
||||
#include <boost/vmd/get_type.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/adjust_tuple_type.hpp>
|
||||
#include <boost/vmd/detail/data_equal.hpp>
|
||||
#include <boost/vmd/detail/equal_common.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_EQUAL_HEADERS_HPP */
|
||||
236
install/boost_1_75_0/include/boost/vmd/detail/seq.hpp
Normal file
236
install/boost_1_75_0/include/boost/vmd/detail/seq.hpp
Normal file
@@ -0,0 +1,236 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQ_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQ_HPP
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/facilities/empty.hpp>
|
||||
#include <boost/preprocessor/seq/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/parens.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_INIT(seq) \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS(seq,BOOST_VMD_RETURN_AFTER), \
|
||||
BOOST_PP_EMPTY() \
|
||||
), \
|
||||
BOOST_PP_EMPTY() \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_INIT_D(d,seq) \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS_D(d,seq,BOOST_VMD_RETURN_AFTER), \
|
||||
BOOST_PP_EMPTY() \
|
||||
), \
|
||||
BOOST_PP_EMPTY() \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_PRED(d,state) \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_FAILURE(d,state) \
|
||||
( \
|
||||
BOOST_PP_EMPTY(), \
|
||||
BOOST_PP_EMPTY(), \
|
||||
BOOST_PP_TUPLE_ELEM(2,state), \
|
||||
BOOST_PP_TUPLE_ELEM(3,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_MAKE_SEQ(d,state) \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_UPGRADE_SEQ(d,state) \
|
||||
BOOST_PP_SEQ_PUSH_BACK \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(2,state), \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_SUCCESS(d,state) \
|
||||
( \
|
||||
BOOST_PP_EMPTY(), \
|
||||
BOOST_PP_EMPTY(), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(2,state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_MAKE_SEQ, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_UPGRADE_SEQ \
|
||||
) \
|
||||
(d,state), \
|
||||
BOOST_PP_EMPTY() \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_CONTINUE(d,state) \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_PARENS_D(d,BOOST_PP_TUPLE_ELEM(1,state),BOOST_VMD_RETURN_AFTER), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(2,state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_MAKE_SEQ, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_UPGRADE_SEQ \
|
||||
) \
|
||||
(d,state) \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM(1,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP_CHECK_REST(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(1,state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_SUCCESS, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_CONTINUE \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_OP(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
1, \
|
||||
BOOST_PP_TUPLE_SIZE \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,state) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_CHECK_REST, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP_SET_FAILURE \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_STATE_RESULT(state) \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(2,state), \
|
||||
BOOST_PP_TUPLE_ELEM(3,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_PROCESS(seq) \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_RESULT \
|
||||
( \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_INIT(seq) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_SPLIT(seq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(seq), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SEQ_PROCESS \
|
||||
) \
|
||||
(seq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_BEGIN(seq) \
|
||||
BOOST_PP_TUPLE_ELEM(0,BOOST_VMD_DETAIL_SEQ_SPLIT(seq)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_PROCESS_D(d,seq) \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_RESULT \
|
||||
( \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_OP, \
|
||||
BOOST_VMD_DETAIL_SEQ_STATE_INIT_D(d,seq) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_SPLIT_D(d,seq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(seq), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SEQ_PROCESS_D \
|
||||
) \
|
||||
(d,seq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_BEGIN_D(d,seq) \
|
||||
BOOST_PP_TUPLE_ELEM(0,BOOST_VMD_DETAIL_SEQ_SPLIT_D(d,seq)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_SPLIT_D, \
|
||||
BOOST_VMD_DETAIL_SEQ_BEGIN_D \
|
||||
) \
|
||||
(d,BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQ(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQ_SPLIT, \
|
||||
BOOST_VMD_DETAIL_SEQ_BEGIN \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQ_HPP */
|
||||
@@ -0,0 +1,66 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_ARITY_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ARITY_HPP
|
||||
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/logical/bitnor.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_MULTI_TUPLE(tuple) \
|
||||
BOOST_PP_BITNOR \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1,tuple)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_UNARY_TUPLE(tuple) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1,tuple)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
// UNARY
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_UNARY(vseq) \
|
||||
BOOST_VMD_DETAIL_IS_UNARY_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM(BOOST_VMD_ALLOW_AFTER,0,vseq,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_UNARY_D(d,vseq) \
|
||||
BOOST_VMD_DETAIL_IS_UNARY_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_D(d,BOOST_VMD_ALLOW_AFTER,0,vseq,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
// MULTI
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_MULTI(vseq) \
|
||||
BOOST_VMD_DETAIL_IS_MULTI_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM(BOOST_VMD_ALLOW_AFTER,0,vseq,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_IS_MULTI_D(d,vseq) \
|
||||
BOOST_VMD_DETAIL_IS_MULTI_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_D(d,BOOST_VMD_ALLOW_AFTER,0,vseq,BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_ARITY_HPP */
|
||||
@@ -0,0 +1,766 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_COMMON_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_COMMON_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/inc.hpp>
|
||||
#include <boost/preprocessor/array/push_back.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/comparison/less_equal.hpp>
|
||||
#include <boost/preprocessor/comparison/not_equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/list/append.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/seq/push_back.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/replace.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_empty_list.hpp>
|
||||
#include <boost/vmd/detail/array.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/identifier.hpp>
|
||||
#include <boost/vmd/detail/identifier_type.hpp>
|
||||
#include <boost/vmd/detail/list.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/seq.hpp>
|
||||
#include <boost/vmd/detail/tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT_ELEM 0
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ELEM 1
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM_ELEM 2
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE_ELEM 3
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM_ELEM 4
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES_ELEM 5
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX_ELEM 6
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,number) \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM(0,from), \
|
||||
number \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_NO_RETURN(d,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,BOOST_VMD_DETAIL_MODS_NO_RETURN) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_EXACT_RETURN(d,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,BOOST_VMD_DETAIL_MODS_RETURN) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_GENERAL_RETURN(d,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,BOOST_VMD_DETAIL_MODS_RETURN_TUPLE) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_ARRAY_RETURN(d,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,BOOST_VMD_DETAIL_MODS_RETURN_ARRAY) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_LIST_RETURN(d,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_RETURN(d,from,BOOST_VMD_DETAIL_MODS_RETURN_LIST) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(from) \
|
||||
BOOST_PP_EQUAL \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(1,from), \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_AFTER \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,from) \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM(1,from), \
|
||||
BOOST_VMD_DETAIL_MODS_RETURN_AFTER \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state) \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX_ELEM,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_IS_EMPTY(state) \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_FROM_EMPTY(state,data) \
|
||||
(data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_TO_SEQ(state,data) \
|
||||
BOOST_PP_SEQ_PUSH_BACK(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state),data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_TO_TUPLE(state,data) \
|
||||
BOOST_PP_TUPLE_PUSH_BACK(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state),data) \
|
||||
/**/
|
||||
|
||||
// Array
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_BOOST_VMD_TYPE_ARRAY(d,state,data) \
|
||||
BOOST_PP_ARRAY_PUSH_BACK(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state),data) \
|
||||
/**/
|
||||
|
||||
// List
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_BOOST_VMD_TYPE_LIST(d,state,data) \
|
||||
BOOST_PP_LIST_APPEND_D(d,BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state),(data,BOOST_PP_NIL)) \
|
||||
/**/
|
||||
|
||||
// Seq
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_BOOST_VMD_TYPE_SEQ(d,state,data) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_IS_EMPTY(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_FROM_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_TO_SEQ \
|
||||
) \
|
||||
(state,data) \
|
||||
/**/
|
||||
|
||||
// Tuple
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_BOOST_VMD_TYPE_TUPLE(d,state,data) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_IS_EMPTY(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_FROM_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_TO_TUPLE \
|
||||
) \
|
||||
(state,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_GET_NAME(state) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_PROCESS(d,name,state,data) \
|
||||
name(d,state,data) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_GET_DATA(d,state,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_NO_RETURN \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM, \
|
||||
BOOST_VMD_IDENTITY(tuple) \
|
||||
) \
|
||||
(1,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD(d,state,ttuple) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_PROCESS \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_GET_NAME(state), \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD_GET_DATA(d,state,ttuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_PROCESSING_ELEM_CHECK(d,state) \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_SEQ_SIZE(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_PROCESSING_ELEM(d,state) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state)), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PROCESSING_ELEM_CHECK \
|
||||
) \
|
||||
(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE(state) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state),BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE_REENTRANT(state) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
1, \
|
||||
BOOST_PP_TUPLE_ELEM(BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state),BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_UNKNOWN(d,state) \
|
||||
( \
|
||||
, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD(d,state,(BOOST_VMD_TYPE_UNKNOWN,BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state))), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state), \
|
||||
BOOST_PP_INC(BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state)) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_GET_FULL_TYPE_CHECK_ID(d,type,id) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,type,BOOST_VMD_TYPE_IDENTIFIER), \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_TYPE_D, \
|
||||
BOOST_VMD_IDENTITY(type) \
|
||||
) \
|
||||
(d,id) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_GET_FULL_TYPE(d,state,tuple) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_GET_FULL_TYPE_CHECK_ID \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_TYPE_, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE(state) \
|
||||
), \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_PROCESS(d,state,tuple) \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(1,tuple), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_GET_FULL_TYPE(d,state,tuple), \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state), \
|
||||
BOOST_PP_INC(BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state))) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_SEQ_SINGLE(d,tuple) \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(0,tuple)),1) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_SEQ(d,state,tuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_GET_FULL_TYPE(d,state,tuple), \
|
||||
BOOST_VMD_TYPE_SEQ \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_SEQ_SINGLE, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,tuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND(d,state,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_SEQ(d,state,tuple), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INCREMENT_INDEX, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND_PROCESS \
|
||||
) \
|
||||
(d,state,tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INCREMENT_INDEX(d,state,tuple) \
|
||||
BOOST_PP_TUPLE_REPLACE_D(d,state,BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX_ELEM,BOOST_PP_INC(BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state))) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE_TUPLE(d,state,tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,tuple) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INCREMENT_INDEX, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_FOUND \
|
||||
) \
|
||||
(d,state,tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE(d,call,state) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE_TUPLE \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
call(BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state),BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE_D(d,call,state) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE_TUPLE \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
call(d,BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state),BOOST_VMD_RETURN_AFTER) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_GCLRT(state) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_, \
|
||||
BOOST_PP_CAT(BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE(state),_D) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_GCLPL(state) \
|
||||
BOOST_PP_CAT \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_GCL(state,rflag) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
rflag, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_GCLRT, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_GCLPL \
|
||||
) \
|
||||
(state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_RT_CALL(d,call,state,rflag) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
rflag, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TEST_TYPE \
|
||||
) \
|
||||
(d,call,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_RT(d,state,rflag) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_RT_CALL \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_GCL(state,rflag), \
|
||||
state, \
|
||||
rflag \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST(d,state) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST_RT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_GET_TYPE_REENTRANT(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_OP(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state), \
|
||||
BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state)) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_UNKNOWN, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP_TEST \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_INNER_PRED(d,state) \
|
||||
BOOST_PP_NOT_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INDEX(state), \
|
||||
BOOST_PP_INC(BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_SEQUENCE_STATE_TYPES(state))) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ELEM_FROM(d,from) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_GENERAL_RETURN(d,from), \
|
||||
((SEQ,1),(TUPLE,1)), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_EXACT_RETURN(d,from), \
|
||||
((SEQ,1),(LIST,1),(ARRAY,1),(TUPLE,1)), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_ARRAY_RETURN(d,from), \
|
||||
((SEQ,1),(ARRAY,1),(TUPLE,1)), \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_LIST_RETURN(d,from), \
|
||||
((SEQ,1),(LIST,1),(TUPLE,1)), \
|
||||
((SEQ,1),(TUPLE,1)) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ELEM(d,state) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ELEM_FROM \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ANY(d,state) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ELEM, \
|
||||
BOOST_VMD_IDENTITY(((SEQ,1),(TUPLE,1))) \
|
||||
) \
|
||||
(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PROCESSING_ELEM(d,state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ELEM, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES_ANY \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN(d,state) \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP, \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
BOOST_PP_TUPLE_PUSH_BACK \
|
||||
( \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN_TUPLE_TYPES(d,state) \
|
||||
), \
|
||||
0 \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_ID_LOOP(d,state) \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_INNER_OP, \
|
||||
BOOST_PP_TUPLE_PUSH_BACK(BOOST_PP_TUPLE_PUSH_BACK(state,((IDENTIFIER,1))),0) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_ID_EL(d,state) \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(1,BOOST_VMD_DETAIL_LIST_D(d,BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state),BOOST_VMD_RETURN_AFTER)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT_ADD(d,state,(BOOST_VMD_TYPE_LIST,BOOST_PP_NIL)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_ID(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY_LIST_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_IDENTIFIER_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_ID_EL, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_ID_LOOP \
|
||||
) \
|
||||
(d,state) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP_REDUCE_STATE(state) \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_OUTTYPE(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_REDUCE_STATE \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_PAREN, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP_ID \
|
||||
) \
|
||||
(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_PRED_CELEM_SZ(d,state) \
|
||||
BOOST_PP_LESS_EQUAL_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_SEQ_SIZE(BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_PRED_CELEM(d,state) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_ELEM(state) \
|
||||
), \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state) \
|
||||
) \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(1), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PRED_CELEM_SZ \
|
||||
) \
|
||||
(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_PRED(d,state) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
), \
|
||||
BOOST_VMD_IDENTITY(0), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PRED_CELEM \
|
||||
) \
|
||||
(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_CHECK(output) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(output,BOOST_VMD_TYPE_ARRAY), \
|
||||
(0,()), \
|
||||
BOOST_PP_NIL \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_CHECK_D(d,output) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,output,BOOST_VMD_TYPE_ARRAY), \
|
||||
(0,()), \
|
||||
BOOST_PP_NIL \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE(output) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(output,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(output,BOOST_VMD_TYPE_TUPLE) \
|
||||
), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_CHECK \
|
||||
) \
|
||||
(output) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_D(d,output) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_BITOR \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,output,BOOST_VMD_TYPE_SEQ), \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,output,BOOST_VMD_TYPE_TUPLE) \
|
||||
), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_CHECK_D \
|
||||
) \
|
||||
(d,output) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_GET(state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
), \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state) \
|
||||
)
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_GET_D(d,state) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_FROM(state) \
|
||||
), \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_INPUT(state) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_RESULT(state) \
|
||||
)
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE(vseq,elem,output,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_GET \
|
||||
( \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP, \
|
||||
( \
|
||||
vseq, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE \
|
||||
( \
|
||||
output \
|
||||
), \
|
||||
elem, \
|
||||
output, \
|
||||
from \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D(d,vseq,elem,output,from) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_GET_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_PRED, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_OP, \
|
||||
( \
|
||||
vseq, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_EMPTY_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
output \
|
||||
), \
|
||||
elem, \
|
||||
output, \
|
||||
from \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_COMMON_HPP */
|
||||
985
install/boost_1_75_0/include/boost/vmd/detail/sequence_elem.hpp
Normal file
985
install/boost_1_75_0/include/boost/vmd/detail/sequence_elem.hpp
Normal file
@@ -0,0 +1,985 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_ELEM_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
#include <boost/preprocessor/comparison/greater.hpp>
|
||||
#include <boost/preprocessor/control/expr_if.hpp>
|
||||
#include <boost/preprocessor/control/expr_iif.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/bitand.hpp>
|
||||
#include <boost/preprocessor/logical/bitor.hpp>
|
||||
#include <boost/preprocessor/logical/compl.hpp>
|
||||
#include <boost/preprocessor/seq/elem.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/push_back.hpp>
|
||||
#include <boost/preprocessor/tuple/replace.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/is_identifier.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/match_identifier.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/only_after.hpp>
|
||||
#include <boost/vmd/detail/sequence_common.hpp>
|
||||
|
||||
/*
|
||||
|
||||
Given modifications and the requested type,
|
||||
determine whether or not we should be checking for specific identifiers
|
||||
|
||||
1 = check for specific identifiers
|
||||
0 = do no check for specific identifiers
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS(nm,type) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
type, \
|
||||
BOOST_VMD_TYPE_IDENTIFIER \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS_D(d,nm,type) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
type, \
|
||||
BOOST_VMD_TYPE_IDENTIFIER \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Given modifications, determine whether or not an index should be part of the result
|
||||
|
||||
1 = index should be part of the result
|
||||
0 = index should not be part of the result
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_IS_INDEX_RESULT(nm) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(nm), \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_TYPE(nm), \
|
||||
BOOST_VMD_TYPE_IDENTIFIER \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_IS_INDEX_RESULT_D(d,nm) \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(nm), \
|
||||
BOOST_PP_BITAND \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_TYPE(nm), \
|
||||
BOOST_VMD_TYPE_IDENTIFIER \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_INDEX(nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(nm), \
|
||||
(,,), \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_NO_INDEX(nm) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER(nm), \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Returns a failure result given the modifications
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT(nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_IS_INDEX_RESULT(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_INDEX, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_NO_INDEX \
|
||||
) \
|
||||
(nm),nm, \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_D(d,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_IS_INDEX_RESULT_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_INDEX, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_NO_INDEX \
|
||||
) \
|
||||
(nm),nm, \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_TUPLE(res) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_ONLY(res) \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_TUPLE(res) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
1, \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_ONLY(res) \
|
||||
BOOST_PP_TUPLE_ELEM(1,res) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Gets the 'data' of the result given the result and modifications
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA(res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_ONLY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_D(d,res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_ONLY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Gets the 'type' of the result given the result and modifications
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE(res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_ONLY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_D(d,res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_ONLY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED_TUPLE(res) \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
/*
|
||||
|
||||
Determines whether the result from the element access has failed or not
|
||||
|
||||
returns 1 if it has failed, otherwise 0.
|
||||
|
||||
*/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED(res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED_TUPLE, \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED_D(d,res,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED_TUPLE, \
|
||||
BOOST_VMD_IS_EMPTY \
|
||||
) \
|
||||
(res) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_CHELM(seq,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE(seq),elem), \
|
||||
BOOST_PP_SEQ_ELEM, \
|
||||
BOOST_VMD_EMPTY \
|
||||
) \
|
||||
(elem,seq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_CHELM_D(d,seq,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_GREATER_D(d,BOOST_PP_SEQ_SIZE(seq),elem), \
|
||||
BOOST_PP_SEQ_ELEM, \
|
||||
BOOST_VMD_EMPTY \
|
||||
) \
|
||||
(elem,seq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM_RES(data,elem) \
|
||||
( \
|
||||
BOOST_PP_SEQ_ELEM(elem,BOOST_PP_TUPLE_ELEM(0,data)), \
|
||||
BOOST_PP_TUPLE_ELEM(1,data) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM(data,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(0,data)),elem), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM_RES, \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(data,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM_D(d,data,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_GREATER_D(d,BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(0,data)),elem), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM_RES, \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(data,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY(seq,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(seq), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_CHELM \
|
||||
) \
|
||||
(seq,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_D(d,seq,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(seq), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_CHELM_D \
|
||||
) \
|
||||
(d,seq,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER(data,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,data)), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM \
|
||||
) \
|
||||
(data,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_D(d,data,elem) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,data)), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_CHELM_D \
|
||||
) \
|
||||
(d,data,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ(seq,elem,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY \
|
||||
) \
|
||||
(seq,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_D(d,seq,elem,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_AFTER_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_ONLY_D \
|
||||
) \
|
||||
(d,seq,elem) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(...) \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PROCESS(elem,vseq,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE \
|
||||
( \
|
||||
vseq, \
|
||||
elem, \
|
||||
BOOST_VMD_TYPE_SEQ, \
|
||||
nm \
|
||||
), \
|
||||
elem, \
|
||||
nm \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PROCESS_D(d,elem,vseq,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FSEQ_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
vseq, \
|
||||
elem, \
|
||||
BOOST_VMD_TYPE_SEQ, \
|
||||
nm \
|
||||
), \
|
||||
elem, \
|
||||
nm \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_EMPTY(elem,vseq,nm) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_EMPTY_D(d,elem,vseq,nm) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_CE(elem,vseq,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(vseq), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PROCESS, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_EMPTY \
|
||||
) \
|
||||
(elem,vseq,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_CE_D(d,elem,vseq,nm) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(vseq), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PROCESS_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_EMPTY_D \
|
||||
) \
|
||||
(d,elem,vseq,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN(res,nm,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER(nm), \
|
||||
BOOST_PP_TUPLE_ELEM, \
|
||||
BOOST_VMD_IDENTITY(res) \
|
||||
) \
|
||||
(1,res) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_INDEX_JRES(data,index) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
index, \
|
||||
(data,BOOST_PP_DEC(index)), \
|
||||
(,) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_JRES(data,index) \
|
||||
BOOST_PP_EXPR_IF \
|
||||
( \
|
||||
index, \
|
||||
data \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_MATCH(data,nm,index) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_INDEX_JRES, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_JRES \
|
||||
) \
|
||||
(data,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_TUP(data,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_MATCH \
|
||||
( \
|
||||
data, \
|
||||
nm, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER \
|
||||
( \
|
||||
data, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_TUP_D(d,data,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_MATCH \
|
||||
( \
|
||||
data, \
|
||||
nm, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_D \
|
||||
( \
|
||||
d, \
|
||||
data, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID(data,nm,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS(nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_TUP, \
|
||||
BOOST_VMD_IDENTITY(data) \
|
||||
) \
|
||||
(data,nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_D(d,data,nm,type) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS_D(d,nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_TUP_D, \
|
||||
BOOST_VMD_IDENTITY(data) \
|
||||
) \
|
||||
(d,data,nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID \
|
||||
( \
|
||||
BOOST_PP_TUPLE_ELEM(1,res), \
|
||||
nm, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_ID_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_ELEM(1,res), \
|
||||
nm, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_CHANGE(res,nm,type) \
|
||||
BOOST_PP_TUPLE_REPLACE \
|
||||
( \
|
||||
res, \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
1, \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_CHANGE_D(d,res,nm,type) \
|
||||
BOOST_PP_TUPLE_REPLACE_D \
|
||||
( \
|
||||
d, \
|
||||
res, \
|
||||
0, \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
1, \
|
||||
BOOST_PP_TUPLE_ELEM(0,res) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_CHANGE \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_ONLY_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_CHANGE_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_SUCCESS(res,nm,type,index) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER \
|
||||
( \
|
||||
BOOST_PP_TUPLE_PUSH_BACK(res,BOOST_PP_DEC(index)), \
|
||||
nm, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_SUCCESS_D(d,res,nm,type,index) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_PP_TUPLE_PUSH_BACK(res,BOOST_PP_DEC(index)), \
|
||||
nm, \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_FAILURE(res,nm,type,index) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT(nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_FAILURE_D(d,res,nm,type,index) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_D(d,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_INDEX_JRES(res,nm,type,index) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
index, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_SUCCESS, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_FAILURE \
|
||||
) \
|
||||
(res,nm,type,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_INDEX_JRES_D(d,res,nm,type,index) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
index, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_SUCCESS_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_FAILURE_D \
|
||||
) \
|
||||
(d,res,nm,type,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_FAILURE(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT(nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_FAILURE_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_D(d,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES(res,nm,type,index) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
index, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_FAILURE \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_D(d,res,nm,type,index) \
|
||||
BOOST_PP_IF \
|
||||
( \
|
||||
index, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_FAILURE_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_RES(res,nm,type,index) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_INDEX_JRES, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES \
|
||||
) \
|
||||
(res,nm,type,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_RES_D(d,res,nm,type,index) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_INDEX(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_INDEX_JRES_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_JRES_D \
|
||||
) \
|
||||
(d,res,nm,type,index) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_RES \
|
||||
( \
|
||||
res, \
|
||||
nm, \
|
||||
type, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA(res,nm), \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_RES_D \
|
||||
( \
|
||||
d, \
|
||||
res, \
|
||||
nm, \
|
||||
type, \
|
||||
BOOST_VMD_DETAIL_MATCH_IDENTIFIER_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_D(d,res,nm), \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_OTHER(nm) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS(nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_CHECK_FOR_IDENTIFIERS_D(d,nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ID_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_ONLY_CAFTER_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER(nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_STATE_IS_AFTER_D(d,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_SPLIT_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_ONLY_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_FAILED(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT(nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_FAILED_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_D(d,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_ID(res,nm,type) \
|
||||
BOOST_VMD_IS_IDENTIFIER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA(res,nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_ID_D(d,res,nm,type) \
|
||||
BOOST_VMD_IS_IDENTIFIER_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_DATA_D(d,res,nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_OTHER(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE(res,nm), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_OTHER_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_RESULT_TYPE_D(d,res,nm), \
|
||||
type \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_IDENTIFIER, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_ID, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_OTHER \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_IDENTIFIER, \
|
||||
type \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_ID_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_OTHER_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE(res,nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_FAILED \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_MATCHING_TYPE_D(d,res,nm,type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_CHECK_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_FAILED_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_NF(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_NF_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(type), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_FIN_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_PT_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_FAILED(res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT(nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_FAILED_D(d,res,nm,type) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_FAILURE_RESULT_D(d,nm) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE(res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED(res,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_FAILED, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_NF \
|
||||
) \
|
||||
(res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_D(d,res,nm,type) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_HAS_FAILED_D(d,res,nm), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_FAILED_D, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_NF_D \
|
||||
) \
|
||||
(d,res,nm,type) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_COA(res,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE \
|
||||
( \
|
||||
res, \
|
||||
nm, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_TYPE(nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_COA_D(d,res,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
res, \
|
||||
nm, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_TYPE(nm) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM(elem,vseq,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_COA \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_CE(elem,vseq,nm), \
|
||||
nm \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_D(d,elem,vseq,nm) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_COA_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_CE_D(d,elem,vseq,nm), \
|
||||
nm \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM(allow,elem,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM \
|
||||
( \
|
||||
elem, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(allow,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ELEM_D(d,allow,elem,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_NM_D \
|
||||
( \
|
||||
d, \
|
||||
elem, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,allow,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_ELEM_HPP */
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_ENUM_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ENUM_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/enum.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_to_tuple.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ENUM_PROCESS(tuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(tuple), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_PP_TUPLE_ENUM \
|
||||
) \
|
||||
(tuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ENUM(...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ENUM_PROCESS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE(__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_ENUM_D(d,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ENUM_PROCESS \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE_D(d,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_ENUM_HPP */
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_SIZE_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_SIZE_HPP
|
||||
|
||||
#include <boost/preprocessor/array/size.hpp>
|
||||
#include <boost/vmd/detail/sequence_to_array.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_SIZE(vseq) \
|
||||
BOOST_PP_ARRAY_SIZE(BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY(vseq)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_SIZE_D(d,vseq) \
|
||||
BOOST_PP_ARRAY_SIZE(BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY_D(d,vseq)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_SIZE_HPP */
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_TO_ARRAY_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
), \
|
||||
(0,()) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
), \
|
||||
(0,()) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_TO_ARRAY_HPP */
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_TO_LIST_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_LIST_HPP
|
||||
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_LIST(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_PP_NIL \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_LIST_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_PP_NIL \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_TO_LIST_HPP */
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_TO_SEQ_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_SEQ_HPP
|
||||
|
||||
#include <boost/preprocessor/control/expr_iif.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_SEQ(...) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_SEQ, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_SEQ_D(d,...) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_SEQ, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_TO_SEQ_HPP */
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_TO_TUPLE_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE_HPP
|
||||
|
||||
#include <boost/preprocessor/control/expr_iif.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/not_empty.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE(...) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE_D(d,...) \
|
||||
BOOST_PP_EXPR_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NOT_EMPTY(BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_PROCESS_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_GET_VSEQ(__VA_ARGS__), \
|
||||
, \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_RETURN,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_TO_TUPLE_HPP */
|
||||
274
install/boost_1_75_0/include/boost/vmd/detail/sequence_type.hpp
Normal file
274
install/boost_1_75_0/include/boost/vmd/detail/sequence_type.hpp
Normal file
@@ -0,0 +1,274 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SEQUENCE_TYPE_HPP)
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_HPP
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/detail/equal_type.hpp>
|
||||
#include <boost/vmd/detail/is_array_common.hpp>
|
||||
#include <boost/vmd/detail/is_list.hpp>
|
||||
#include <boost/vmd/detail/modifiers.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/sequence_elem.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY(dtuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX(BOOST_PP_TUPLE_ELEM(1,dtuple)), \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
BOOST_VMD_TYPE_TUPLE \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY_D(d,dtuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_ARRAY_SYNTAX_D(d,BOOST_PP_TUPLE_ELEM(1,dtuple)), \
|
||||
BOOST_VMD_TYPE_ARRAY, \
|
||||
BOOST_VMD_TYPE_TUPLE \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST(dtuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST(BOOST_PP_TUPLE_ELEM(1,dtuple)), \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
BOOST_VMD_TYPE_TUPLE \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST_D(d,dtuple) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_IS_LIST_D(d,BOOST_PP_TUPLE_ELEM(1,dtuple)), \
|
||||
BOOST_VMD_TYPE_LIST, \
|
||||
BOOST_VMD_TYPE_TUPLE \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_BOTH(dtuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE \
|
||||
( \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST(dtuple) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_LIST) \
|
||||
) \
|
||||
(dtuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_BOTH_D(d,dtuple) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_TYPE_TUPLE, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST_D(d,dtuple) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY_D, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_LIST) \
|
||||
) \
|
||||
(d,dtuple) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MODS(dtuple,rtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(rtype,BOOST_VMD_DETAIL_MODS_RETURN_ARRAY), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(rtype,BOOST_VMD_DETAIL_MODS_RETURN_LIST), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(rtype,BOOST_VMD_DETAIL_MODS_RETURN_TUPLE), \
|
||||
BOOST_VMD_IDENTITY(BOOST_PP_TUPLE_ELEM(0,dtuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_BOTH \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(dtuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MODS_D(d,dtuple,rtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,rtype,BOOST_VMD_DETAIL_MODS_RETURN_ARRAY), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_ARRAY_D, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,rtype,BOOST_VMD_DETAIL_MODS_RETURN_LIST), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_LIST_D, \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,rtype,BOOST_VMD_DETAIL_MODS_RETURN_TUPLE), \
|
||||
BOOST_VMD_IDENTITY(BOOST_PP_TUPLE_ELEM(0,dtuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_BOTH_D \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
(d,dtuple) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MORE(dtuple,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MODS \
|
||||
( \
|
||||
dtuple, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_RETURN_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_ALL,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MORE_D(d,dtuple,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MODS_D \
|
||||
( \
|
||||
d, \
|
||||
dtuple, \
|
||||
BOOST_VMD_DETAIL_MODS_RESULT_RETURN_TYPE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS_D(d,BOOST_VMD_ALLOW_ALL,__VA_ARGS__) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_UNARY(dtuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE(BOOST_VMD_TYPE_TUPLE,BOOST_PP_TUPLE_ELEM(0,dtuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MORE, \
|
||||
BOOST_VMD_IDENTITY(BOOST_PP_TUPLE_ELEM(0,dtuple)) \
|
||||
) \
|
||||
(dtuple,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_UNARY_D(d,dtuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_EQUAL_TYPE_D(d,BOOST_VMD_TYPE_TUPLE,BOOST_PP_TUPLE_ELEM(0,dtuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_MORE_D, \
|
||||
BOOST_VMD_IDENTITY(BOOST_PP_TUPLE_ELEM(0,dtuple)) \
|
||||
) \
|
||||
(d,dtuple,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_SEQUENCE(tuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1,tuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_UNARY, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_SEQUENCE) \
|
||||
) \
|
||||
(BOOST_PP_TUPLE_ELEM(0,tuple),__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_SEQUENCE_D(d,tuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1,tuple)), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_UNARY_D, \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_SEQUENCE) \
|
||||
) \
|
||||
(d,BOOST_PP_TUPLE_ELEM(0,tuple),__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE(tuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_EMPTY), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_SEQUENCE \
|
||||
) \
|
||||
(tuple,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_D(d,tuple,...) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0,tuple)), \
|
||||
BOOST_VMD_IDENTITY(BOOST_VMD_TYPE_EMPTY), \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_SEQUENCE_D \
|
||||
) \
|
||||
(d,tuple,__VA_ARGS__) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE(...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM \
|
||||
( \
|
||||
BOOST_VMD_ALLOW_ALL, \
|
||||
0, \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
|
||||
BOOST_VMD_RETURN_AFTER, \
|
||||
BOOST_VMD_RETURN_TYPE_TUPLE \
|
||||
), \
|
||||
__VA_ARGS__ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_SEQUENCE_TYPE_D(d,...) \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_TYPE_TUPLE_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_DETAIL_SEQUENCE_ELEM_D \
|
||||
( \
|
||||
d, \
|
||||
BOOST_VMD_ALLOW_ALL, \
|
||||
0, \
|
||||
BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__), \
|
||||
BOOST_VMD_RETURN_AFTER, \
|
||||
BOOST_VMD_RETURN_TYPE_TUPLE \
|
||||
), \
|
||||
__VA_ARGS__ \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SEQUENCE_TYPE_HPP */
|
||||
41
install/boost_1_75_0/include/boost/vmd/detail/setup.hpp
Normal file
41
install/boost_1_75_0/include/boost/vmd/detail/setup.hpp
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_SETUP_HPP)
|
||||
#define BOOST_VMD_DETAIL_SETUP_HPP
|
||||
|
||||
#include <boost/preprocessor/config/config.hpp>
|
||||
|
||||
#if defined(BOOST_VMD_MSVC)
|
||||
#undef BOOST_VMD_MSVC
|
||||
#endif
|
||||
#if defined(BOOST_VMD_MSVC_V8)
|
||||
#undef BOOST_VMD_MSVC_V8
|
||||
#endif
|
||||
#if BOOST_PP_VARIADICS
|
||||
#define BOOST_VMD_MSVC BOOST_PP_VARIADICS_MSVC
|
||||
#if BOOST_VMD_MSVC && defined(_MSC_VER) && _MSC_VER == 1400
|
||||
#define BOOST_VMD_MSVC_V8 1
|
||||
#else
|
||||
#define BOOST_VMD_MSVC_V8 0
|
||||
#endif /* BOOST_VMD_MSVC && defined(_MSC_VER) && _MSC_VER == 1400 */
|
||||
#if !defined(BOOST_VMD_ASSERT_DATA)
|
||||
#if defined(NDEBUG)
|
||||
#define BOOST_VMD_ASSERT_DATA 0
|
||||
#else
|
||||
#define BOOST_VMD_ASSERT_DATA 1
|
||||
#endif /* NDEBUG */
|
||||
#endif /* BOOST_VMD_ASSERT_DATA */
|
||||
#else
|
||||
#define BOOST_VMD_MSVC 0
|
||||
#define BOOST_VMD_MSVC_V8 0
|
||||
#if defined(BOOST_VMD_ASSERT_DATA)
|
||||
#undef BOOST_VMD_ASSERT_DATA
|
||||
#endif
|
||||
#define BOOST_VMD_ASSERT_DATA 0
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_SETUP_HPP */
|
||||
196
install/boost_1_75_0/include/boost/vmd/detail/tuple.hpp
Normal file
196
install/boost_1_75_0/include/boost/vmd/detail/tuple.hpp
Normal file
@@ -0,0 +1,196 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// 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_TUPLE_HPP)
|
||||
#define BOOST_VMD_DETAIL_TUPLE_HPP
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/vmd/empty.hpp>
|
||||
#include <boost/vmd/is_empty.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/empty_result.hpp>
|
||||
#include <boost/vmd/detail/mods.hpp>
|
||||
#include <boost/vmd/detail/parens.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BST_CS(vseq) \
|
||||
BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_BEGIN_PARENS(vseq)),1) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BST_CS_D(d,vseq) \
|
||||
BOOST_PP_EQUAL_D(d,BOOST_PP_TUPLE_SIZE(BOOST_VMD_DETAIL_BEGIN_PARENS(vseq)),1) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BST(vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST_CS, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BST_D(d,vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST_CS_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BSEQ_NXT(vseq) \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST(BOOST_VMD_DETAIL_AFTER_PARENS_DATA(vseq)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BSEQ_NXT_D(d,vseq) \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST_D(d,BOOST_VMD_DETAIL_AFTER_PARENS_DATA(vseq)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BSEQ(vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ_NXT, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_BSEQ_D(d,vseq) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BST_D(d,vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ_NXT_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,vseq) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_SPLIT_CHK_SEQ(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ(vseq), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SPLIT_PARENS \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_SPLIT_CHK_SEQ_D(d,vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ_D(d,vseq), \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT, \
|
||||
BOOST_VMD_DETAIL_SPLIT_PARENS \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_SPLIT(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_SPLIT_CHK_SEQ, \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_SPLIT_D(d,vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_SPLIT_CHK_SEQ_D, \
|
||||
BOOST_VMD_DETAIL_EMPTY_RESULT \
|
||||
) \
|
||||
(d,vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_PROCESS_CHK_SEQ(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ(vseq), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_BEGIN_PARENS \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_PROCESS_CHK_SEQ_D(d,vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_TUPLE_BSEQ_D(d,vseq), \
|
||||
BOOST_VMD_EMPTY, \
|
||||
BOOST_VMD_DETAIL_BEGIN_PARENS \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_PROCESS(vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_PROCESS_CHK_SEQ, \
|
||||
BOOST_VMD_EMPTY \
|
||||
) \
|
||||
(vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_PROCESS_D(d,vseq) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_IS_BEGIN_PARENS(vseq), \
|
||||
BOOST_VMD_DETAIL_TUPLE_PROCESS_CHK_SEQ_D, \
|
||||
BOOST_VMD_EMPTY \
|
||||
) \
|
||||
(d,vseq) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE(...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_TUPLE_SPLIT, \
|
||||
BOOST_VMD_DETAIL_TUPLE_PROCESS \
|
||||
) \
|
||||
(BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_TUPLE_D(d,...) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_MODS_IS_RESULT_AFTER \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_NEW_MODS(BOOST_VMD_ALLOW_AFTER,__VA_ARGS__) \
|
||||
), \
|
||||
BOOST_VMD_DETAIL_TUPLE_SPLIT_D, \
|
||||
BOOST_VMD_DETAIL_TUPLE_PROCESS_D \
|
||||
) \
|
||||
(d,BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__)) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_TUPLE_HPP */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user