diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7eccf18..114fdac 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -91,7 +91,6 @@ alias preprocessor_number_512 [ compile stringize.cpp : BOOST_PP_LIMIT_MAG=512 : stringize_num ] [ compile tuple.cpp : BOOST_PP_LIMIT_MAG=512 : tuple_num ] [ compile variadic.cpp : BOOST_PP_LIMIT_MAG=512 : variadic_num ] - ; alias preprocessor_v_128 @@ -395,6 +394,27 @@ alias preprocessor_c_nvm_num ] ; +alias preprocessor_number_rep_512 + : + [ compile repetition.cpp : + BOOST_PP_LIMIT_MAG=512 + BOOST_PP_LIMIT_REPEAT=512 + BOOST_PP_LIMIT_FOR=512 + : repetition_rep_num + ] + ; + +alias preprocessor_number_nvm_rep_512 + : + [ compile repetition.cpp : + BOOST_PP_LIMIT_MAG=512 + BOOST_PP_LIMIT_REPEAT=512 + BOOST_PP_LIMIT_FOR=512 + BOOST_PP_VARIADICS=0 + : repetition_nvm_rep_num + ] + ; + alias preprocessor_isempty : : gcc 3.4 diff --git a/test/repetition.cpp b/test/repetition.cpp index 9c5fe9b..51965de 100644 --- a/test/repetition.cpp +++ b/test/repetition.cpp @@ -13,7 +13,9 @@ # include # include # include +# include # include +# include # include # include @@ -43,8 +45,56 @@ template struct no_rescan; # define F1(z, n, p) p n BEGIN 1 + (4+5+6) BOOST_PP_REPEAT_FROM_TO(4, 7, F1, -) END +# if BOOST_PP_LIMIT_REPEAT == 512 + +# define RP512M(z,n,data) \ + struct BOOST_PP_CAT(data,BOOST_PP_INC(n)); \ +/* */ + +BOOST_PP_REPEAT_FROM_TO(508,512,RP512M,r512_t) + +#endif + # define PRED(r, state) BOOST_PP_NOT_EQUAL(state, BOOST_PP_INC(MAX)) # define OP(r, state) BOOST_PP_INC(state) # define MACRO(r, state) BOOST_PP_COMMA_IF(BOOST_PP_NOT_EQUAL(state, 1)) BOOST_PP_CAT(class T, state) template struct for_test; + +# if BOOST_PP_LIMIT_FOR == 512 + +# define PRED512(r, state) BOOST_PP_NOT_EQUAL(state, 512) + +# define MACRO512_NUL(state) + +# define MACRO512_OUT(state) struct BOOST_PP_CAT(f_512t,state); + +# define MACRO512(r, state) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_BITOR \ + ( \ + BOOST_PP_BITOR \ + ( \ + BOOST_PP_EQUAL(state,100), \ + BOOST_PP_EQUAL(state,200) \ + ), \ + BOOST_PP_BITOR \ + ( \ + BOOST_PP_BITOR \ + ( \ + BOOST_PP_EQUAL(state,300), \ + BOOST_PP_EQUAL(state,400) \ + ), \ + BOOST_PP_EQUAL(state,500) \ + ) \ + ), \ + MACRO512_OUT, \ + MACRO512_NUL \ + ) \ + (state) \ +/* */ + +BOOST_PP_FOR(0, PRED512, OP, MACRO512) + +#endif