Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:53:34

0001 
0002 //  (C) Copyright Edward Diener 2011-2015
0003 //  Use, modification and distribution are subject to the Boost Software License,
0004 //  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
0005 //  http://www.boost.org/LICENSE_1_0.txt).
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 /* BOOST_VMD_DETAIL_DATA_EQUAL_14_HPP */