File indexing completed on 2025-01-18 09:53:34
0001
0002
0003
0004
0005
0006
0007 #if !defined(BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP)
0008 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP
0009
0010 #include <boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp>
0011
0012 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS(d,em1,em2) \
0013 BOOST_VMD_IDENTITY_RESULT \
0014 ( \
0015 BOOST_PP_IIF \
0016 ( \
0017 BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
0018 BOOST_VMD_IDENTITY(2), \
0019 BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
0020 ) \
0021 (d,em1,em2) \
0022 ) \
0023
0024
0025 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D(d,em1,em2) \
0026 BOOST_VMD_IDENTITY_RESULT \
0027 ( \
0028 BOOST_PP_IIF \
0029 ( \
0030 BOOST_VMD_DETAIL_DATA_EQUAL_IS_BOTH_COMPOSITE(em1,em2), \
0031 BOOST_VMD_IDENTITY(2), \
0032 BOOST_VMD_DETAIL_EQUAL_SIMPLE_D \
0033 ) \
0034 (d,em1,em2) \
0035 ) \
0036
0037
0038 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP(d,state,em1,em2) \
0039 BOOST_PP_IIF \
0040 ( \
0041 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
0042 BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
0043 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS \
0044 ) \
0045 (d,em1,em2) \
0046
0047
0048 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D(d,state,em1,em2) \
0049 BOOST_PP_IIF \
0050 ( \
0051 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_COMP_PROCESSING(d,state), \
0052 BOOST_VMD_DETAIL_EQUAL_SIMPLE_D, \
0053 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_PARENS_D \
0054 ) \
0055 (d,em1,em2) \
0056
0057
0058 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
0059 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP \
0060 ( \
0061 d, \
0062 state, \
0063 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
0064 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
0065 ) \
0066
0067
0068 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
0069 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_CMP_D \
0070 ( \
0071 d, \
0072 state, \
0073 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_FIRST_ELEMENT(d,state), \
0074 BOOST_VMD_DETAIL_DATA_EQUAL_STATE_GET_SECOND_ELEMENT(d,state) \
0075 ) \
0076
0077
0078 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP(d,state) \
0079 BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
0080 ( \
0081 d, \
0082 state, \
0083 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ(d,state) \
0084 ) \
0085
0086
0087 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D(d,state) \
0088 BOOST_VMD_DETAIL_DATA_EQUAL_OP_RESULT \
0089 ( \
0090 d, \
0091 state, \
0092 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_TEQ_D(d,state) \
0093 ) \
0094
0095
0096 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP(dataf,datas,sz,vtype) \
0097 BOOST_PP_TUPLE_ELEM \
0098 ( \
0099 0, \
0100 BOOST_PP_WHILE \
0101 ( \
0102 BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
0103 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP, \
0104 ( \
0105 1, \
0106 dataf, \
0107 datas, \
0108 sz, \
0109 vtype, \
0110 0, \
0111 ) \
0112 ) \
0113 ) \
0114
0115
0116 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D(d,dataf,datas,sz,vtype) \
0117 BOOST_PP_TUPLE_ELEM \
0118 ( \
0119 0, \
0120 BOOST_PP_WHILE_ ## d \
0121 ( \
0122 BOOST_VMD_DETAIL_DATA_EQUAL_PRED, \
0123 BOOST_VMD_DETAIL_DATA_EQUAL_14_OP_D, \
0124 ( \
0125 1, \
0126 dataf, \
0127 datas, \
0128 sz, \
0129 vtype, \
0130 0, \
0131 ) \
0132 ) \
0133 ) \
0134
0135
0136 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ(dataf,datas,szf,szs,vtype) \
0137 BOOST_VMD_IDENTITY_RESULT \
0138 ( \
0139 BOOST_PP_IIF \
0140 ( \
0141 BOOST_PP_EQUAL(szf,szs), \
0142 BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP, \
0143 BOOST_VMD_IDENTITY(0) \
0144 ) \
0145 (dataf,datas,szf,vtype) \
0146 ) \
0147
0148
0149 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D(d,dataf,datas,szf,szs,vtype) \
0150 BOOST_VMD_IDENTITY_RESULT \
0151 ( \
0152 BOOST_PP_IIF \
0153 ( \
0154 BOOST_PP_EQUAL_D(d,szf,szs), \
0155 BOOST_VMD_DETAIL_DATA_EQUAL_14_LOOP_D, \
0156 BOOST_VMD_IDENTITY(0) \
0157 ) \
0158 (d,dataf,datas,szf,vtype) \
0159 ) \
0160
0161
0162 #define BOOST_VMD_DETAIL_DATA_EQUAL_14(dataf,datas,vtype) \
0163 BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ \
0164 ( \
0165 dataf, \
0166 datas, \
0167 BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(dataf,vtype), \
0168 BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE(datas,vtype), \
0169 vtype \
0170 ) \
0171
0172
0173 #define BOOST_VMD_DETAIL_DATA_EQUAL_14_D(d,dataf,datas,vtype) \
0174 BOOST_VMD_DETAIL_DATA_EQUAL_14_SZ_D \
0175 ( \
0176 d, \
0177 dataf, \
0178 datas, \
0179 BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,dataf,vtype), \
0180 BOOST_VMD_DETAIL_DATA_EQUAL_GET_SIZE_D(d,datas,vtype), \
0181 vtype \
0182 ) \
0183
0184
0185 #endif