add boost on mac
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_1_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_1_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_1_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_1_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_10_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_10_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_10_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_10_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_11_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_11_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_11_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_11_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_12_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_12_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_12_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_12_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_13_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_13_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_13_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_13_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_14_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_15_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_15_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_15_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_15_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_16_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_16_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_16_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_16_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_2_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_2_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_2_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_2_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_3_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_3_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_3_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_3_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_4_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_4_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_4_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_4_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_5_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_5_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_5_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_5_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_6_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_6_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_6_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_6_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_7_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_7_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_7_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_7_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_8_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_8_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_8_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_8_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_9_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_9_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_9_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_9_HPP */
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_HEADERS_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_HEADERS_HPP
|
||||
|
||||
#include <boost/preprocessor/array/size.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/control/while.hpp>
|
||||
#include <boost/preprocessor/list/size.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/vmd/equal.hpp>
|
||||
#include <boost/vmd/identity.hpp>
|
||||
#include <boost/vmd/detail/data_equal_common.hpp>
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_HEADERS_HPP */
|
||||
@@ -0,0 +1,185 @@
|
||||
|
||||
// (C) Copyright Edward Diener 2011-2015
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
#if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_HPP)
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_HPP
|
||||
|
||||
#include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
|
||||
BOOST_VMD_IDENTITY(2), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_D(d,state,em1,em2) \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
|
||||
BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_PARENS_D \
|
||||
) \
|
||||
(d,em1,em2) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_CMP_D \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_D(d,state) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
|
||||
( \
|
||||
d, \
|
||||
state, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_TEQ_D(d,state) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP(dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP_D(d,dataf,datas,sz,vtype) \
|
||||
BOOST_PP_TUPLE_ELEM \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_WHILE_ ## d \
|
||||
( \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_OP_D, \
|
||||
( \
|
||||
1, \
|
||||
dataf, \
|
||||
datas, \
|
||||
sz, \
|
||||
vtype, \
|
||||
0, \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ(dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL(szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ_D(d,dataf,datas,szf,szs,vtype) \
|
||||
BOOST_VMD_IDENTITY_RESULT \
|
||||
( \
|
||||
BOOST_PP_IIF \
|
||||
( \
|
||||
BOOST_PP_EQUAL_D(d,szf,szs), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_LOOP_D, \
|
||||
BOOST_VMD_IDENTITY(0) \
|
||||
) \
|
||||
(d,dataf,datas,szf,vtype) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC(dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ \
|
||||
( \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_D(d,dataf,datas,vtype) \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_SZ_D \
|
||||
( \
|
||||
d, \
|
||||
dataf, \
|
||||
datas, \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
|
||||
BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
|
||||
vtype \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_VMD_DETAIL_DATA_EQUAL_SPECIFIC_HPP */
|
||||
Reference in New Issue
Block a user