stabilize build system: depends, installer, boost/bdb fixes, cross targets groundwork

This commit is contained in:
2026-02-24 18:38:47 +00:00
parent da8c28aaeb
commit 65cb2619a7
13106 changed files with 2484322 additions and 1804 deletions
@@ -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 */