summaryrefslogtreecommitdiff
path: root/boost/vmd/detail/recurse/equal/equal_16.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/vmd/detail/recurse/equal/equal_16.hpp')
-rw-r--r--boost/vmd/detail/recurse/equal/equal_16.hpp282
1 files changed, 282 insertions, 0 deletions
diff --git a/boost/vmd/detail/recurse/equal/equal_16.hpp b/boost/vmd/detail/recurse/equal/equal_16.hpp
new file mode 100644
index 0000000000..031105e55f
--- /dev/null
+++ b/boost/vmd/detail/recurse/equal/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_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 */