diff --git a/doc/acknowledgements.htm b/doc/acknowledgements.htm index dfdbb39..38c8977 100644 --- a/doc/acknowledgements.htm +++ b/doc/acknowledgements.htm @@ -25,6 +25,8 @@
Thanks to everyone who participated in the review: David Abrahams, Beman Dawes, Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.
Thanks to Chris Little and Mat Marcus for providing help with MWCW.
+The original automatic recursion technique, which makes many of the library +primitives easier to use, was invented by Paul Mensonides.
The PREPROCESSOR library has been developed by Vesa Karvonen.
Revised diff --git a/doc/examples.htm b/doc/examples.htm index 092e187..a4e93a7 100644 --- a/doc/examples.htm +++ b/doc/examples.htm @@ -21,56 +21,56 @@
array_arithmetic.c | This example implements over 2200 functions for 1-dimensional arithmetic + | |
array_arithmetic.c | Implements over 2200 functions for 1-dimensional arithmetic array manipulation in C. The idea is to use preprocessor data structures, lists and tuples, for storing metainformation to be used for generating the actual C code. | |
catch_builtin.cpp | -This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). | +Demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). |
count_down.c | -This is a trivial example of using BOOST_PP_WHILE() that simply counts + | Trivial example of using BOOST_PP_WHILE() that simply counts down from N to 0 ultimately expanding to a 0. |
delay.c | -This example implements a macro whose expansion takes exponential amount + | Implements a macro whose expansion takes exponential amount of time. |
duffs_device.c | -This example uses the preprocessor library to implement a generalized + | Uses the preprocessor library to implement a generalized macro for implementing a Duff's Device. |
is_integral.cpp | -This example demonstrates the usage of preprocessor lists for generating + | Demonstrates the usage of preprocessor lists for generating C++ code. |
linear_fib.c | -This example shows how BOOST_PP_WHILE() can be used for implementing macros. | +Shows how BOOST_PP_WHILE() can be used for implementing macros. |
note.c | -This example shows how BOOST_PP_STRINGIZE() can be used to allow macro + | Shows how BOOST_PP_STRINGIZE() can be used to allow macro expansion before stringization. |
repeat_2d.c | -This example implements a generalized macro for 2D repetition using the + | Implements a generalized macro for 2D repetition using the simple repetition primitives of the preprocessor library. |
static_assert.c | -This example shows how BOOST_PP_CAT() can be used to allow macro expansion + | Shows how BOOST_PP_CAT() can be used to allow macro expansion before token concatenation. |
subscript_layer.cpp | -This example shows how BOOST_PP_EMPTY can be used as an unused or empty + | Shows how BOOST_PP_EMPTY can be used as an unused or empty parameter. |
For example, BOOST_PP_ADD(4,3)
expands to 7
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_DIV(4,3)
expands to 1
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_MOD(4,3)
expands to 1
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_MUL(4,3)
expands to 12
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_SUB(4,3)
expands to 1
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_EQUAL(4,4)
expands to 1
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_GREATER(4,3)
expands to 1
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_GREATER_EQUAL(1,3)
expands to 0
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_LESS(2,6)
expands to 1
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_LESS_EQUAL(7,5)
expands to 0
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_NOT_EQUAL(4,4)
expands to 0
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
BOOST_PP_ENUM() implements automatic recursion. 2D and 3D repetition +are directly supported.
+ +BOOST_PP_FOR() can be used for multidimensional repetition simply by invoking BOOST_PP_FOR##R() directly.
+BOOST_PP_FOR() currently does not implement automatic recursion. The reason +for this is that it would lead to very poor performance. The automatic recursion +technique takes O(N) steps just to find out that the Nth recursion should be used. +This would dramatically effect the time complexity of macros using automatic +recursion.
+Expands to the number of dimensions of repeat supported by the library.
-The repeat macros are named BOOST_PP_REPEAT(), BOOST_PP_REPEAT_2ND(), -BOOST_PP_REPEAT_3RD(), ...
+This concerns the repetition primitives (BOOST_PP_ENUM(), +BOOST_PP_REPEAT() and BOOST_PP_REPEAT_FROM_TO()).
Expands to the maximum straight numeric literal supported by the library.
-This is also the limit of the repetition primitives (BOOST_PP_ENUM family -and BOOST_PP_REPEAT family).
+This is also the limit of the repetition primitives (BOOST_PP_ENUM(), +BOOST_PP_REPEAT() and BOOST_PP_REPEAT_FROM_TO()).
Includes all list headers.
+Includes all list headers.
+ +A list is an arbitrary size collection of elements.
+ +In the preprocessor library, the internal representation of lists +uses parts that are like macro parameter lists. Thus an element of a list +can be any sequence of tokens that constitutes a single macro parameter.
+ +Lists are manipulated using both list ADT macros and higher-order macros. For an introduction to manipulation of lists in functional programming, see +[Thompson], +[Abelson] or +[Cousineau].
+Both of the above lists contain 5 elements: 1, 2, 3, 4 and 5.
Longer lists can be built from short lists with BOOST_PP_LIST_APPEND_D() -and BOOST_PP_LIST_FOLD_RIGHT_2ND():
+and BOOST_PP_LIST_FOLD_RIGHT():-BOOST_PP_LIST_FOLD_RIGHT_2ND +BOOST_PP_LIST_FOLD_RIGHT ( BOOST_PP_LIST_APPEND_D , BOOST_PP_TUPLE_TO_LIST ( N @@ -70,6 +70,7 @@ and BOOST_PP_LIST , ... , BOOST_PP_TUPLE_TO_LIST(M, (EN1, EN2, ..., ENM) ) ) +, BOOST_PP_LIST_NIL )diff --git a/doc/reference/list_append.htm b/doc/reference/list_append.htm index ae05b06..a51caef 100644 --- a/doc/reference/list_append.htm +++ b/doc/reference/list_append.htm @@ -42,11 +42,6 @@ BOOST_PP_TUPLE_TO_LIST(4,(1,2,3,4)) -
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
0
.
expands to B
.
0
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
Can be used inside BOOST_PP_FOR().
+Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
PRED(D,DATA,X)
is true.
BOOST_PP_TUPLE_TO_LIST(2,(1,3))
-PRED(D,DATA,X)
is true.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation the D parameter).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
+ +Obsolete, just use BOOST_PP_LIST_FOLD_LEFT().
+Obsolete, just use BOOST_PP_LIST_FOLD_LEFT_D().
Same as BOOST_PP_LIST_FOLD_LEFT(), but implemented independently.
-This header is obsolete. Use the following code instead.
+ ++#include <boost/preprocessor/list/fold_left.hpp> +-
Can be used inside BOOST_PP_WHILE().
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
+ +Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT().
+Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT_D().
Same as BOOST_PP_LIST_FOLD_RIGHT(), but implemented independently.
-This header is obsolete. Use the following code instead.
+ ++#include <boost/preprocessor/list/fold_right.hpp> +-
Can be used inside BOOST_PP_WHILE().
Can be used inside BOOST_PP_FOR().
+Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
Can be used inside BOOST_PP_FOR().
+Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
Can be used inside BOOST_PP_FOR().
+Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
LIST
.
LIST
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
expands to 3
.
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
Can be used inside BOOST_PP_FOR().
+Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_MAX(5,7)
expands to 7
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
For example, BOOST_PP_MIN(5,7)
expands to 5
(a
single token).
Can be used inside BOOST_PP_WHILE().
+Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
2D and 3D repetition are supported with the BOOST_PP_REPEAT_2ND() and -BOOST_PP_REPEAT_3RD() macros.
+BOOST_PP_REPEAT() implements automatic recursion. 2D and 3D repetition +are directly supported.
Obsolete, just use BOOST_PP_REPEAT().
+Obsolete, just use BOOST_PP_REPEAT().
Same as BOOST_PP_REPEAT(), but implemented independently.
+This header is obsolete. Use the following code instead.
-+#include <boost/preprocessor/repeat.hpp> +
Same as BOOST_PP_REPEAT(), but implemented independently.
+This header is obsolete. Use the following code instead.
+ ++#include <boost/preprocessor/repeat.hpp> ++
BOOST_PP_REPEAT_FROM_TO() implements automatic recursion. 2D and 3D repetition +are directly supported.
+ +Obsolete, just use BOOST_PP_REPEAT_FROM_TO().
+Obsolete, just use BOOST_PP_REPEAT_FROM_TO().
+Same as BOOST_PP_REPEAT_FROM_TO(), but implemented independently.
+This header is obsolete. Use the following code instead.
+ ++#include <boost/preprocessor/repeat_from_to.hpp> ++
Same as BOOST_PP_REPEAT_FROM_TO(), but implemented independently.
+This header is obsolete. Use the following code instead.
+ ++#include <boost/preprocessor/repeat_from_to.hpp> ++
BOOST_PP_WHILE() currently does not implement automatic recursion. The reason +for this is that it would lead to very poor performance. The automatic recursion +technique takes O(N) steps just to find out that the Nth recursion should be used. +This would dramatically effect the time complexity of macros using automatic +recursion.
+The need for this kind of repetition occurs particularly frequently while implementing generic components or metaprogramming facilities, but the need also manifests itself in many far simpler situations.
-Typically the repetition is done manually. Manual code repetition is highly unproductive, but sometimes more readable to the untrained eye.
@@ -111,7 +111,7 @@ yes_type is_function_tester(R (*)(A0, A1, A2)); template<class R BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class A)>\ yes_type is_function_tester(R (*)(BOOST_PP_ENUM_PARAMS(N,A))); -BOOST_PP_REPEAT_2ND(BOOST_PP_INC(MAX_IS_FUNCTION_TESTER_PARAMS),IS_FUNCTION_TESTER,_) +BOOST_PP_REPEAT(BOOST_PP_INC(MAX_IS_FUNCTION_TESTER_PARAMS),IS_FUNCTION_TESTER,_) #undef IS_FUNCTION_TESTER @@ -189,12 +189,12 @@ of the line continuation operators without making the code too unreadable.TIP: Use syntax highlighting on preprocessor metaprogramming macro and parameter identifiers such as
It can greatly improve readability.
EXAMPLE: Use:
to avoid O(N) repetition on lists in general
@@ -359,7 +359,7 @@ categorical repetition of operator tokens can not be completely eliminated by using template metaprogramming.EXAMPLE: - Use BOOST_PP_REPEAT_2ND to avoid O(N*N) repetition
+ Use BOOST_PP_REPEAT to avoid O(N*N) repetition#ifndef MAX_VEC_ARG_CNT #define MAX_VEC_ARG_CNT 8 @@ -375,7 +375,7 @@ vec( BOOST_PP_REPEAT(I,ARG_FUN,_) )\ { BOOST_PP_REPEAT(I,ASSIGN_FUN,_)\ } -BOOST_PP_REPEAT_2ND +BOOST_PP_REPEAT ( BOOST_PP_INC(MAX_VEC_ARG_CNT) , DEF_VEC_CTOR_FUN , _ @@ -388,8 +388,9 @@ BOOST_PP_REPEAT_2ND // ...-
HOW: BOOST_PP_REPEAT_2ND is implemented separately, so it - is possible to combine BOOST_PP_REPEAT and BOOST_PP_REPEAT_2ND.
+HOW: BOOST_PP_REPEAT is implemented in a special way to enable +automatic recursion.
+EXAMPLE: Use BOOST_PP_IF to implement special case for the first element
diff --git a/example/repeat_2d.c b/example/repeat_2d.c index e5a66bc..ee010ce 100644 --- a/example/repeat_2d.c +++ b/example/repeat_2d.c @@ -15,7 +15,6 @@ */ #includeBOOST_PP_ENUM() implements automatic recursion. 2D and 3D repetition +are directly supported.
+ +BOOST_PP_FOR() can be used for multidimensional repetition simply by invoking BOOST_PP_FOR##R() directly.
+BOOST_PP_FOR() currently does not implement automatic recursion. The reason +for this is that it would lead to very poor performance. The automatic recursion +technique takes O(N) steps just to find out that the Nth recursion should be used. +This would dramatically effect the time complexity of macros using automatic +recursion.
+Includes all list headers.
*/ +/**Includes all list headers.
+ +A list is an arbitrary size collection of elements.
+ +In the preprocessor library, the internal representation of lists +uses parts that are like macro parameter lists. Thus an element of a list +can be any sequence of tokens that constitutes a single macro parameter.
+ +Lists are manipulated using both list ADT macros and higher-order macros. For an introduction to manipulation of lists in functional programming, see +[Thompson], +[Abelson] or +[Cousineau].
+*/ #includeBoth of the above lists contain 5 elements: 1, 2, 3, 4 and 5.
Longer lists can be built from short lists with BOOST_PP_LIST_APPEND_D() -and BOOST_PP_LIST_FOLD_RIGHT_2ND():
+and BOOST_PP_LIST_FOLD_RIGHT():-BOOST_PP_LIST_FOLD_RIGHT_2ND +BOOST_PP_LIST_FOLD_RIGHT ( BOOST_PP_LIST_APPEND_D , BOOST_PP_TUPLE_TO_LIST ( N @@ -61,6 +61,7 @@ BOOST_PP_LIST_FOLD_RIGHT_2ND , ... , BOOST_PP_TUPLE_TO_LIST(M, (EN1, EN2, ..., ENM) ) ) +, BOOST_PP_LIST_NIL )*/ diff --git a/include/boost/preprocessor/list/append.hpp b/include/boost/preprocessor/list/append.hpp index 8a7e14a..c01c2b5 100644 --- a/include/boost/preprocessor/list/append.hpp +++ b/include/boost/preprocessor/list/append.hpp @@ -32,11 +32,6 @@ BOOST_PP_LIST_APPEND BOOST_PP_TUPLE_TO_LIST(4,(1,2,3,4)) -
Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_APPEND_D(D,LIST_1ST,LIST_2ND) BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_APPEND_F,LIST_1ST,LIST_2ND) -#define BOOST_PP_LIST_APPEND_F(D,H,P) (H,P,1) +#define BOOST_PP_LIST_APPEND_F(D,X,S) (X,S,1) #endif diff --git a/include/boost/preprocessor/list/at.hpp b/include/boost/preprocessor/list/at.hpp index afac0b0..f92b61f 100644 --- a/include/boost/preprocessor/list/at.hpp +++ b/include/boost/preprocessor/list/at.hpp @@ -26,11 +26,6 @@ BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)),1)expands to B
.
Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_AT_D(D,LIST,INDEX) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(D,INDEX,LIST)) #endif diff --git a/include/boost/preprocessor/list/cat.hpp b/include/boost/preprocessor/list/cat.hpp index 7a88f99..8b77e47 100644 --- a/include/boost/preprocessor/list/cat.hpp +++ b/include/boost/preprocessor/list/cat.hpp @@ -30,11 +30,6 @@ BOOST_PP_LIST_CAT(BOOST_PP_TUPLE_TO_LIST(3,(1,2,3))) 123 -Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_CAT_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_CAT_F,BOOST_PP_TUPLE3_ELEM0 LIST,BOOST_PP_TUPLE3_ELEM1 LIST) -#define BOOST_PP_LIST_CAT_F(D,P,H) BOOST_PP_CAT(P,H) +#define BOOST_PP_LIST_CAT_F(D,S,X) BOOST_PP_CAT(S,X) #endif diff --git a/include/boost/preprocessor/list/enum.hpp b/include/boost/preprocessor/list/enum.hpp index 2727d79..18a9a19 100644 --- a/include/boost/preprocessor/list/enum.hpp +++ b/include/boost/preprocessor/list/enum.hpp @@ -37,7 +37,7 @@ A,B,C */ #define BOOST_PP_LIST_ENUM(LIST) BOOST_PP_LIST_ENUM_R(0,LIST) -/**Can be used inside BOOST_PP_FOR().
*/ +/**Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
*/ #define BOOST_PP_LIST_ENUM_R(R,LIST) BOOST_PP_LIST_FOR_EACH_I_R(R,BOOST_PP_LIST_ENUM_F,_,LIST) #define BOOST_PP_LIST_ENUM_F(R,_,I,X) BOOST_PP_COMMA_IF(I) X #endif diff --git a/include/boost/preprocessor/list/filter.hpp b/include/boost/preprocessor/list/filter.hpp index 838d546..9c94c4e 100644 --- a/include/boost/preprocessor/list/filter.hpp +++ b/include/boost/preprocessor/list/filter.hpp @@ -30,12 +30,6 @@ BOOST_PP_LIST_FILTER(BOOST_PP_NOT_EQUAL_D,2,BOOST_PP_TUPLE_TO_LIST(3,(1,2,3))) BOOST_PP_TUPLE_TO_LIST(2,(1,3)) -Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_FILTER_D(D,PRED,DATA,LIST) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_FILTER_F,LIST,(PRED,DATA,(_,_,0)))) #if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FILTER_F(D,H,P) (BOOST_PP_TUPLE_ELEM(3,0,P),BOOST_PP_TUPLE_ELEM(3,1,P),BOOST_PP_IF(BOOST_PP_TUPLE_ELEM(3,0,P)(D,BOOST_PP_TUPLE3_ELEM1 P,H),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(H,BOOST_PP_TUPLE_ELEM(3,2,P))) +# define BOOST_PP_LIST_FILTER_F(D,X,PDR) (BOOST_PP_TUPLE_ELEM(3,0,PDR),BOOST_PP_TUPLE_ELEM(3,1,PDR),BOOST_PP_IF(BOOST_PP_TUPLE_ELEM(3,0,PDR)(D,BOOST_PP_TUPLE3_ELEM1 PDR,X),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(X,BOOST_PP_TUPLE_ELEM(3,2,PDR))) #elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_FILTER_F(D,H,P) (BOOST_PP_TUPLE_ELEM(3,0,P),BOOST_PP_TUPLE3_ELEM1 P,BOOST_PP_IF(BOOST_PP_TUPLE3_ELEM0 P(D,BOOST_PP_TUPLE3_ELEM1 P,H),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(H,BOOST_PP_TUPLE3_ELEM2 P)) +# define BOOST_PP_LIST_FILTER_F(D,X,PDR) (BOOST_PP_TUPLE_ELEM(3,0,PDR),BOOST_PP_TUPLE3_ELEM1 PDR,BOOST_PP_IF(BOOST_PP_TUPLE3_ELEM0 PDR(D,BOOST_PP_TUPLE3_ELEM1 PDR,X),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(X,BOOST_PP_TUPLE3_ELEM2 PDR)) #else -# define BOOST_PP_LIST_FILTER_F(D,H,P) (BOOST_PP_TUPLE3_ELEM0 P,BOOST_PP_TUPLE3_ELEM1 P,BOOST_PP_IF(BOOST_PP_TUPLE3_ELEM0 P(D,BOOST_PP_TUPLE3_ELEM1 P,H),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(H,BOOST_PP_TUPLE3_ELEM2 P)) +# define BOOST_PP_LIST_FILTER_F(D,X,PDR) (BOOST_PP_TUPLE3_ELEM0 PDR,BOOST_PP_TUPLE3_ELEM1 PDR,BOOST_PP_IF(BOOST_PP_TUPLE3_ELEM0 PDR(D,BOOST_PP_TUPLE3_ELEM1 PDR,X),BOOST_PP_LIST_CONS,BOOST_PP_TUPLE2_ELEM1)(X,BOOST_PP_TUPLE3_ELEM2 PDR)) #endif #endif diff --git a/include/boost/preprocessor/list/first_n.hpp b/include/boost/preprocessor/list/first_n.hpp index f7d8da9..0d64d35 100644 --- a/include/boost/preprocessor/list/first_n.hpp +++ b/include/boost/preprocessor/list/first_n.hpp @@ -37,11 +37,6 @@ BOOST_PP_TUPLE_TO_LIST(2,(+,-))Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation the D parameter).
*/ #define BOOST_PP_LIST_FIRST_N_D(D,COUNT,LIST) BOOST_PP_LIST_REVERSE_D(D,BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_WHILE##D(BOOST_PP_LIST_FIRST_N_C,BOOST_PP_LIST_FIRST_N_F,((_,_,0),LIST,COUNT)))) #if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FIRST_N_C(D,X) BOOST_PP_TUPLE_ELEM(3,2,X) -# define BOOST_PP_LIST_FIRST_N_F(D,X) ((BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,1,X)),BOOST_PP_TUPLE_ELEM(3,0,X),1),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,1,X)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3,2,X))) +# define BOOST_PP_LIST_FIRST_N_C(D,RLC) BOOST_PP_TUPLE_ELEM(3,2,RLC) +# define BOOST_PP_LIST_FIRST_N_F(D,RLC) ((BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,1,RLC)),BOOST_PP_TUPLE_ELEM(3,0,RLC),1),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,1,RLC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3,2,RLC))) #else -# define BOOST_PP_LIST_FIRST_N_C(D,X) BOOST_PP_TUPLE3_ELEM2 X -# define BOOST_PP_LIST_FIRST_N_F(D,X) ((BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_TUPLE3_ELEM0 X,1),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_DEC(BOOST_PP_TUPLE3_ELEM2 X)) +# define BOOST_PP_LIST_FIRST_N_C(D,RLC) BOOST_PP_TUPLE3_ELEM2 RLC +# define BOOST_PP_LIST_FIRST_N_F(D,RLC) ((BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM1 RLC,BOOST_PP_TUPLE3_ELEM0 RLC,1),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM1 RLC,BOOST_PP_DEC(BOOST_PP_TUPLE3_ELEM2 RLC)) #endif #endif diff --git a/include/boost/preprocessor/list/fold_left.hpp b/include/boost/preprocessor/list/fold_left.hpp index 9ade0dd..22544e4 100644 --- a/include/boost/preprocessor/list/fold_left.hpp +++ b/include/boost/preprocessor/list/fold_left.hpp @@ -13,6 +13,7 @@ * See http://www.boost.org for most recent version. */ +#includeCan be used inside BOOST_PP_WHILE().
*/ -#define BOOST_PP_LIST_FOLD_LEFT_D(D,OP,STATE,LIST) BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_WHILE##D(BOOST_PP_LIST_FOLD_LEFT_C,BOOST_PP_LIST_FOLD_LEFT_F,(OP,STATE,LIST))) -#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FOLD_LEFT_C(D,X) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(3,2,X)) -# define BOOST_PP_LIST_FOLD_LEFT_F(D,X) (BOOST_PP_TUPLE_ELEM(3,0,X),BOOST_PP_TUPLE_ELEM(3,0,X)(D,BOOST_PP_TUPLE_ELEM(3,1,X),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,2,X))),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,2,X))) -#elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_FOLD_LEFT_C(D,X) BOOST_PP_TUPLE3_ELEM2 BOOST_PP_TUPLE3_ELEM2 X -# define BOOST_PP_LIST_FOLD_LEFT_F(D,X) (BOOST_PP_TUPLE_ELEM(3,0,X),BOOST_PP_TUPLE3_ELEM0 X(D,BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM2 X),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM2 X) -#else -# define BOOST_PP_LIST_FOLD_LEFT_C(D,X) BOOST_PP_TUPLE3_ELEM2 BOOST_PP_TUPLE3_ELEM2 X -# define BOOST_PP_LIST_FOLD_LEFT_F(D,X) (BOOST_PP_TUPLE3_ELEM0 X,BOOST_PP_TUPLE3_ELEM0 X(D,BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM2 X),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM2 X) +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
+ +Obsolete, just use BOOST_PP_LIST_FOLD_LEFT().
*/ +#define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT +/**Obsolete, just use BOOST_PP_LIST_FOLD_LEFT_D().
*/ +#define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D #endif diff --git a/include/boost/preprocessor/list/fold_left_2nd.hpp b/include/boost/preprocessor/list/fold_left_2nd.hpp index df12662..95b809b 100644 --- a/include/boost/preprocessor/list/fold_left_2nd.hpp +++ b/include/boost/preprocessor/list/fold_left_2nd.hpp @@ -13,22 +13,12 @@ * See http://www.boost.org for most recent version. */ -#includeThis header is obsolete. Use the following code instead.
-/**Same as BOOST_PP_LIST_FOLD_LEFT(), but implemented independently.
*/ -#define BOOST_PP_LIST_FOLD_LEFT_2ND(OP,STATE,LIST) BOOST_PP_LIST_FOLD_LEFT_2ND_D(0,OP,STATE,LIST) ++#include <boost/preprocessor/list/fold_left.hpp> ++*/ -/**
Can be used inside BOOST_PP_WHILE().
*/ -#define BOOST_PP_LIST_FOLD_LEFT_2ND_D(D,OP,STATE,LIST) BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_WHILE##D(BOOST_PP_LIST_FOLD_LEFT_2ND_C,BOOST_PP_LIST_FOLD_LEFT_2ND_F,(OP,STATE,LIST))) -#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FOLD_LEFT_2ND_C(D,X) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(3,2,X)) -# define BOOST_PP_LIST_FOLD_LEFT_2ND_F(D,X) (BOOST_PP_TUPLE_ELEM(3,0,X),BOOST_PP_TUPLE_ELEM(3,0,X)(D,BOOST_PP_TUPLE_ELEM(3,1,X),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(3,2,X))),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(3,2,X))) -#elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_FOLD_LEFT_2ND_C(D,X) BOOST_PP_TUPLE3_ELEM2 BOOST_PP_TUPLE3_ELEM2 X -# define BOOST_PP_LIST_FOLD_LEFT_2ND_F(D,X) (BOOST_PP_TUPLE_ELEM(3,0,X),BOOST_PP_TUPLE3_ELEM0 X(D,BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM2 X),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM2 X) -#else -# define BOOST_PP_LIST_FOLD_LEFT_2ND_C(D,X) BOOST_PP_TUPLE3_ELEM2 BOOST_PP_TUPLE3_ELEM2 X -# define BOOST_PP_LIST_FOLD_LEFT_2ND_F(D,X) (BOOST_PP_TUPLE3_ELEM0 X,BOOST_PP_TUPLE3_ELEM0 X(D,BOOST_PP_TUPLE3_ELEM1 X,BOOST_PP_TUPLE3_ELEM0 BOOST_PP_TUPLE3_ELEM2 X),BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE3_ELEM2 X) -#endif +#includeCan be used inside BOOST_PP_WHILE().
*/ -#define BOOST_PP_LIST_FOLD_RIGHT_D(D,OP,LIST,STATE) BOOST_PP_TUPLE_ELEM(2,1,BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_FOLD_RIGHT_F,(OP,STATE),BOOST_PP_LIST_REVERSE_D(D,LIST))) -#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FOLD_RIGHT_F(D,P,H) (BOOST_PP_TUPLE_ELEM(2,0,P),BOOST_PP_TUPLE_ELEM(2,0,P)(D,H,BOOST_PP_TUPLE_ELEM(2,1,P))) -#elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_FOLD_RIGHT_F(D,P,H) (BOOST_PP_TUPLE_ELEM(2,0,P),BOOST_PP_TUPLE_ELEM(2,0,P)(D,H,BOOST_PP_TUPLE2_ELEM1 P)) -#else -# define BOOST_PP_LIST_FOLD_RIGHT_F(D,P,H) (BOOST_PP_TUPLE2_ELEM0 P,BOOST_PP_TUPLE2_ELEM0 P(D,H,BOOST_PP_TUPLE2_ELEM1 P)) +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
+ +Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT().
*/ +#define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT +/**Obsolete, just use BOOST_PP_LIST_FOLD_RIGHT_D().
*/ +#define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D #endif diff --git a/include/boost/preprocessor/list/fold_right_2nd.hpp b/include/boost/preprocessor/list/fold_right_2nd.hpp index 5dada16..0e99a42 100644 --- a/include/boost/preprocessor/list/fold_right_2nd.hpp +++ b/include/boost/preprocessor/list/fold_right_2nd.hpp @@ -13,19 +13,12 @@ * See http://www.boost.org for most recent version. */ -#includeThis header is obsolete. Use the following code instead.
-/**Same as BOOST_PP_LIST_FOLD_RIGHT(), but implemented independently.
*/ -#define BOOST_PP_LIST_FOLD_RIGHT_2ND(OP,LIST,STATE) BOOST_PP_LIST_FOLD_RIGHT_2ND_D(0,OP,LIST,STATE) ++#include <boost/preprocessor/list/fold_right.hpp> ++*/ -/**
Can be used inside BOOST_PP_WHILE().
*/ -#define BOOST_PP_LIST_FOLD_RIGHT_2ND_D(D,OP,LIST,STATE) BOOST_PP_TUPLE_ELEM(2,1,BOOST_PP_LIST_FOLD_LEFT_2ND_D(D,BOOST_PP_LIST_FOLD_RIGHT_2ND_F,(OP,STATE),BOOST_PP_LIST_FOLD_LEFT_2ND_D(D,BOOST_PP_LIST_REVERSE_F,(_,_,0),LIST))) -#if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_FOLD_RIGHT_2ND_F(D,P,H) (BOOST_PP_TUPLE_ELEM(2,0,P),BOOST_PP_TUPLE_ELEM(2,0,P)(D,H,BOOST_PP_TUPLE_ELEM(2,1,P))) -#elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_FOLD_RIGHT_2ND_F(D,P,H) (BOOST_PP_TUPLE_ELEM(2,0,P),BOOST_PP_TUPLE_ELEM(2,0,P)(D,H,BOOST_PP_TUPLE2_ELEM1 P)) -#else -# define BOOST_PP_LIST_FOLD_RIGHT_2ND_F(D,P,H) (BOOST_PP_TUPLE2_ELEM0 P,BOOST_PP_TUPLE2_ELEM0 P(D,H,BOOST_PP_TUPLE2_ELEM1 P)) -#endif +#includeCan be used inside BOOST_PP_FOR().
*/ +/**Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
*/ #define BOOST_PP_LIST_FOR_EACH_R(R,MACRO,DATA,LIST) BOOST_PP_LIST_FOR_EACH_I_R(R,BOOST_PP_LIST_FOR_EACH_F,(MACRO,DATA),LIST) -#define BOOST_PP_LIST_FOR_EACH_F(R,FP,I,X) BOOST_PP_TUPLE_ELEM(2,0,FP)(R,BOOST_PP_TUPLE_ELEM(2,1,FP),X) +#define BOOST_PP_LIST_FOR_EACH_F(R,MD,I,X) BOOST_PP_TUPLE_ELEM(2,0,MD)(R,BOOST_PP_TUPLE_ELEM(2,1,MD),X) #endif diff --git a/include/boost/preprocessor/list/for_each_i.hpp b/include/boost/preprocessor/list/for_each_i.hpp index 409673f..41602cc 100644 --- a/include/boost/preprocessor/list/for_each_i.hpp +++ b/include/boost/preprocessor/list/for_each_i.hpp @@ -41,17 +41,12 @@ BOOST_PP_LIST_FOR_EACH_I(TEST,prefix_,BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))prefix_A(0); prefix_B(1); prefix_C(2);- -
Can be used inside BOOST_PP_FOR().
*/ +/**Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
*/ #define BOOST_PP_LIST_FOR_EACH_I_R(R,MACRO,DATA,LIST) BOOST_PP_FOR##R((MACRO,DATA,LIST,0),BOOST_PP_LIST_FOR_EACH_I_C,BOOST_PP_LIST_FOR_EACH_I_F,BOOST_PP_LIST_FOR_EACH_I_I) -#define BOOST_PP_LIST_FOR_EACH_I_C(R,FPLI) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(4,2,FPLI)) -#define BOOST_PP_LIST_FOR_EACH_I_F(R,FPLI) (BOOST_PP_TUPLE_ELEM(4,0,FPLI),BOOST_PP_TUPLE_ELEM(4,1,FPLI),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(4,2,FPLI)),BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4,3,FPLI))) -#define BOOST_PP_LIST_FOR_EACH_I_I(R,FPLI) BOOST_PP_TUPLE_ELEM(4,0,FPLI)(R,BOOST_PP_TUPLE_ELEM(4,1,FPLI),BOOST_PP_TUPLE_ELEM(4,3,FPLI),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,2,FPLI))) +#define BOOST_PP_LIST_FOR_EACH_I_C(R,MDLI) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_TUPLE_ELEM(4,2,MDLI)) +#define BOOST_PP_LIST_FOR_EACH_I_F(R,MDLI) (BOOST_PP_TUPLE_ELEM(4,0,MDLI),BOOST_PP_TUPLE_ELEM(4,1,MDLI),BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(4,2,MDLI)),BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4,3,MDLI))) +#define BOOST_PP_LIST_FOR_EACH_I_I(R,MDLI) BOOST_PP_TUPLE_ELEM(4,0,MDLI)(R,BOOST_PP_TUPLE_ELEM(4,1,MDLI),BOOST_PP_TUPLE_ELEM(4,3,MDLI),BOOST_PP_TUPLE_ELEM(3,0,BOOST_PP_TUPLE_ELEM(4,2,MDLI))) #endif diff --git a/include/boost/preprocessor/list/for_each_product.hpp b/include/boost/preprocessor/list/for_each_product.hpp index 214cd55..38ccec4 100644 --- a/include/boost/preprocessor/list/for_each_product.hpp +++ b/include/boost/preprocessor/list/for_each_product.hpp @@ -50,11 +50,6 @@ BOOST_PP_LIST_FOR_EACH_PRODUCTCan be used inside BOOST_PP_FOR().
*/ +/**Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
*/ #define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(R,MACRO,SIZE_OF_TUPLE,TUPLE_OF_LISTS) BOOST_PP_LIST_FOR_EACH_PRODUCT_R2(0,MACRO,BOOST_PP_TUPLE_TO_LIST(SIZE_OF_TUPLE,BOOST_PP_TUPLE_REVERSE(SIZE_OF_TUPLE,TUPLE_OF_LISTS))) #if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) ||\ !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) diff --git a/include/boost/preprocessor/list/rest_n.hpp b/include/boost/preprocessor/list/rest_n.hpp index 45ec37d..b698dd1 100644 --- a/include/boost/preprocessor/list/rest_n.hpp +++ b/include/boost/preprocessor/list/rest_n.hpp @@ -37,11 +37,6 @@ BOOST_PP_TUPLE_TO_LIST(2,(*,/))Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_REST_N_D(D,COUNT,LIST) BOOST_PP_TUPLE_ELEM(2,0,BOOST_PP_WHILE##D(BOOST_PP_LIST_REST_N_C,BOOST_PP_LIST_REST_N_F,(LIST,COUNT))) #if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_REST_N_C(D,X) BOOST_PP_TUPLE_ELEM(2,1,X) -# define BOOST_PP_LIST_REST_N_F(D,X) (BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(2,0,X)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,X))) +# define BOOST_PP_LIST_REST_N_C(D,LC) BOOST_PP_TUPLE_ELEM(2,1,LC) +# define BOOST_PP_LIST_REST_N_F(D,LC) (BOOST_PP_TUPLE_ELEM(3,1,BOOST_PP_TUPLE_ELEM(2,0,LC)),BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2,1,LC))) #else -# define BOOST_PP_LIST_REST_N_C(D,X) BOOST_PP_TUPLE2_ELEM1 X -# define BOOST_PP_LIST_REST_N_F(D,X) (BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE2_ELEM0 X,BOOST_PP_DEC(BOOST_PP_TUPLE2_ELEM1 X)) +# define BOOST_PP_LIST_REST_N_C(D,LC) BOOST_PP_TUPLE2_ELEM1 LC +# define BOOST_PP_LIST_REST_N_F(D,LC) (BOOST_PP_TUPLE3_ELEM1 BOOST_PP_TUPLE2_ELEM0 LC,BOOST_PP_DEC(BOOST_PP_TUPLE2_ELEM1 LC)) #endif #endif diff --git a/include/boost/preprocessor/list/reverse.hpp b/include/boost/preprocessor/list/reverse.hpp index 0834dce..5c546f0 100644 --- a/include/boost/preprocessor/list/reverse.hpp +++ b/include/boost/preprocessor/list/reverse.hpp @@ -29,11 +29,6 @@ BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C))) BOOST_PP_TUPLE_TO_LIST(3,(C,B,A)) -Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_REVERSE_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_REVERSE_F,(_,_,0),LIST) -#define BOOST_PP_LIST_REVERSE_F(D,P,H) (H,P,1) +#define BOOST_PP_LIST_REVERSE_F(D,S,X) (X,S,1) #endif diff --git a/include/boost/preprocessor/list/size.hpp b/include/boost/preprocessor/list/size.hpp index a0ce8a7..837fcc3 100644 --- a/include/boost/preprocessor/list/size.hpp +++ b/include/boost/preprocessor/list/size.hpp @@ -26,11 +26,6 @@ BOOST_PP_LIST_SIZE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C)))expands to 3
.
Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_SIZE_D(D,LIST) BOOST_PP_LIST_FOLD_LEFT_D(D,BOOST_PP_LIST_SIZE_F,0,LIST) -#define BOOST_PP_LIST_SIZE_F(D,P,H) BOOST_PP_INC(P) +#define BOOST_PP_LIST_SIZE_F(D,S,X) BOOST_PP_INC(S) #endif diff --git a/include/boost/preprocessor/list/to_tuple.hpp b/include/boost/preprocessor/list/to_tuple.hpp index b24c957..83714b3 100644 --- a/include/boost/preprocessor/list/to_tuple.hpp +++ b/include/boost/preprocessor/list/to_tuple.hpp @@ -31,11 +31,6 @@ BOOST_PP_LIST_TO_TUPLE(BOOST_PP_TUPLE_TO_LIST(3,(A,B,C))) BOOST_PP_LIMIT_MAG rather than BOOST_PP_LIMIT_TUPLE.Can be used inside BOOST_PP_FOR().
*/ +/**Can be used inside BOOST_PP_FOR() (see for an explanation of the R parameter).
*/ #define BOOST_PP_LIST_TO_TUPLE_R(R,LIST) (BOOST_PP_LIST_ENUM_R(R,LIST)) #endif diff --git a/include/boost/preprocessor/list/transform.hpp b/include/boost/preprocessor/list/transform.hpp index 5ab33b6..3372bbf 100644 --- a/include/boost/preprocessor/list/transform.hpp +++ b/include/boost/preprocessor/list/transform.hpp @@ -40,12 +40,6 @@ BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D,2,BOOST_PP_TUPLE_TO_LIST(2,(1,2))) BOOST_PP_TUPLE_TO_LIST(2,(3,4)) -Can be used inside BOOST_PP_WHILE().
*/ +/**Can be used inside BOOST_PP_WHILE() (see for an explanation of the D parameter).
*/ #define BOOST_PP_LIST_TRANSFORM_D(D,OP,DATA,LIST) BOOST_PP_TUPLE_ELEM(3,2,BOOST_PP_LIST_FOLD_RIGHT_D(D,BOOST_PP_LIST_TRANSFORM_F,LIST,(OP,DATA,(_,_,0)))) #if !defined(BOOST_NO_COMPILER_CONFIG) && defined(__MWERKS__) -# define BOOST_PP_LIST_TRANSFORM_F(D,H,P) (BOOST_PP_TUPLE_ELEM(3,0,P),BOOST_PP_TUPLE_ELEM(3,1,P),(BOOST_PP_TUPLE_ELEM(3,0,P)(D,BOOST_PP_TUPLE_ELEM(3,1,P),H),BOOST_PP_TUPLE_ELEM(3,2,P),1)) +# define BOOST_PP_LIST_TRANSFORM_F(D,X,ODR) (BOOST_PP_TUPLE_ELEM(3,0,ODR),BOOST_PP_TUPLE_ELEM(3,1,ODR),(BOOST_PP_TUPLE_ELEM(3,0,ODR)(D,BOOST_PP_TUPLE_ELEM(3,1,ODR),X),BOOST_PP_TUPLE_ELEM(3,2,ODR),1)) #elif !defined(BOOST_NO_COMPILER_CONFIG) && defined(_MSC_VER) -# define BOOST_PP_LIST_TRANSFORM_F(D,H,P) (BOOST_PP_TUPLE_ELEM(3,0,P),BOOST_PP_TUPLE3_ELEM1 P,(BOOST_PP_TUPLE_ELEM(3,0,P)(D,BOOST_PP_TUPLE3_ELEM1 P,H),BOOST_PP_TUPLE3_ELEM2 P,1)) +# define BOOST_PP_LIST_TRANSFORM_F(D,X,ODR) (BOOST_PP_TUPLE_ELEM(3,0,ODR),BOOST_PP_TUPLE3_ELEM1 ODR,(BOOST_PP_TUPLE_ELEM(3,0,ODR)(D,BOOST_PP_TUPLE3_ELEM1 ODR,X),BOOST_PP_TUPLE3_ELEM2 ODR,1)) #else -# define BOOST_PP_LIST_TRANSFORM_F(D,H,P) (BOOST_PP_TUPLE3_ELEM0 P,BOOST_PP_TUPLE3_ELEM1 P,(BOOST_PP_TUPLE3_ELEM0 P(D,BOOST_PP_TUPLE3_ELEM1 P,H),BOOST_PP_TUPLE3_ELEM2 P,1)) +# define BOOST_PP_LIST_TRANSFORM_F(D,X,ODR) (BOOST_PP_TUPLE3_ELEM0 ODR,BOOST_PP_TUPLE3_ELEM1 ODR,(BOOST_PP_TUPLE3_ELEM0 ODR(D,BOOST_PP_TUPLE3_ELEM1 ODR,X),BOOST_PP_TUPLE3_ELEM2 ODR,1)) #endif #endif diff --git a/include/boost/preprocessor/repeat.hpp b/include/boost/preprocessor/repeat.hpp index 43ddfd0..dbe54fa 100644 --- a/include/boost/preprocessor/repeat.hpp +++ b/include/boost/preprocessor/repeat.hpp @@ -13,6 +13,8 @@ * See http://www.boost.org for most recent version. */ +#includeRepeats the macro MACRO(INDEX,DATA)
for INDEX = [0,COUNT)
.
In other words, expands to the sequence:
@@ -36,8 +38,8 @@ X(0); X(1); X(2);2D and 3D repetition are supported with the BOOST_PP_REPEAT_2ND() and -BOOST_PP_REPEAT_3RD() macros.
+BOOST_PP_REPEAT() implements automatic recursion. 2D and 3D repetition +are directly supported.
Obsolete. Use BOOST_PP_REPEAT().
*/ -#define BOOST_PREPROCESSOR_REPEAT(C,M,D) BOOST_PP_REPEAT(C,M,D) +#if 0 +# define BOOST_PP_REPEAT(COUNT,MACRO,DATA) +#endif + +#define BOOST_PP_REPEAT\ + BOOST_PP_AUTO_REC_CAT1(BOOST_PP_REPEAT,BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_AUTO_REC_ID,(1))) +#define BOOST_PP_REPEATBOOST_PP_REPEAT_AUTO_REC1(M,P)\ + BOOST_PP_AUTO_REC_CAT2(BOOST_PP_REPEAT,BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_AUTO_REC_ID,(2))) +#define BOOST_PP_REPEATBOOST_PP_REPEAT_AUTO_REC2(M,P)\ + BOOST_PP_AUTO_REC_CAT3(BOOST_PP_REPEAT,BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_AUTO_REC_ID,(3))) +#define BOOST_PP_REPEATBOOST_PP_REPEAT_AUTO_REC3(M,P)\ + (TOO MANY NESTED REPEATS!) + +#define BOOST_PP_REPEAT_AUTO_REC1(M,P) M P +#define BOOST_PP_REPEAT_AUTO_REC2(M,P) M P +#define BOOST_PP_REPEAT_AUTO_REC3(M,P) M P + +#define BOOST_PP_REPEAT1(C,M,D) BOOST_PP_REPEAT_AUTO_REC1(BOOST_PP_R1_DELAY(C),(M,D)) +#define BOOST_PP_R1_DELAY(C) BOOST_PP_R1_##C +#define BOOST_PP_R1_0(M,D) +#define BOOST_PP_R1_1(M,D) M(0,D) +#define BOOST_PP_R1_2(M,D) M(0,D) M(1,D) +#define BOOST_PP_R1_3(M,D) M(0,D) M(1,D) M(2,D) +#define BOOST_PP_R1_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D) +#define BOOST_PP_R1_5(M,D) BOOST_PP_R1_4(M,D) M(4,D) +#define BOOST_PP_R1_6(M,D) BOOST_PP_R1_5(M,D) M(5,D) +#define BOOST_PP_R1_7(M,D) BOOST_PP_R1_6(M,D) M(6,D) +#define BOOST_PP_R1_8(M,D) BOOST_PP_R1_7(M,D) M(7,D) +#define BOOST_PP_R1_9(M,D) BOOST_PP_R1_8(M,D) M(8,D) +#define BOOST_PP_R1_10(M,D) BOOST_PP_R1_9(M,D) M(9,D) +#define BOOST_PP_R1_11(M,D) BOOST_PP_R1_10(M,D) M(10,D) +#define BOOST_PP_R1_12(M,D) BOOST_PP_R1_11(M,D) M(11,D) +#define BOOST_PP_R1_13(M,D) BOOST_PP_R1_12(M,D) M(12,D) +#define BOOST_PP_R1_14(M,D) BOOST_PP_R1_13(M,D) M(13,D) +#define BOOST_PP_R1_15(M,D) BOOST_PP_R1_14(M,D) M(14,D) +#define BOOST_PP_R1_16(M,D) BOOST_PP_R1_15(M,D) M(15,D) +#define BOOST_PP_R1_17(M,D) BOOST_PP_R1_16(M,D) M(16,D) +#define BOOST_PP_R1_18(M,D) BOOST_PP_R1_17(M,D) M(17,D) +#define BOOST_PP_R1_19(M,D) BOOST_PP_R1_18(M,D) M(18,D) +#define BOOST_PP_R1_20(M,D) BOOST_PP_R1_19(M,D) M(19,D) +#define BOOST_PP_R1_21(M,D) BOOST_PP_R1_20(M,D) M(20,D) +#define BOOST_PP_R1_22(M,D) BOOST_PP_R1_21(M,D) M(21,D) +#define BOOST_PP_R1_23(M,D) BOOST_PP_R1_22(M,D) M(22,D) +#define BOOST_PP_R1_24(M,D) BOOST_PP_R1_23(M,D) M(23,D) +#define BOOST_PP_R1_25(M,D) BOOST_PP_R1_24(M,D) M(24,D) +#define BOOST_PP_R1_26(M,D) BOOST_PP_R1_25(M,D) M(25,D) +#define BOOST_PP_R1_27(M,D) BOOST_PP_R1_26(M,D) M(26,D) +#define BOOST_PP_R1_28(M,D) BOOST_PP_R1_27(M,D) M(27,D) +#define BOOST_PP_R1_29(M,D) BOOST_PP_R1_28(M,D) M(28,D) +#define BOOST_PP_R1_30(M,D) BOOST_PP_R1_29(M,D) M(29,D) +#define BOOST_PP_R1_31(M,D) BOOST_PP_R1_30(M,D) M(30,D) +#define BOOST_PP_R1_32(M,D) BOOST_PP_R1_31(M,D) M(31,D) +#define BOOST_PP_R1_33(M,D) BOOST_PP_R1_32(M,D) M(32,D) +#define BOOST_PP_R1_34(M,D) BOOST_PP_R1_33(M,D) M(33,D) +#define BOOST_PP_R1_35(M,D) BOOST_PP_R1_34(M,D) M(34,D) +#define BOOST_PP_R1_36(M,D) BOOST_PP_R1_35(M,D) M(35,D) +#define BOOST_PP_R1_37(M,D) BOOST_PP_R1_36(M,D) M(36,D) +#define BOOST_PP_R1_38(M,D) BOOST_PP_R1_37(M,D) M(37,D) +#define BOOST_PP_R1_39(M,D) BOOST_PP_R1_38(M,D) M(38,D) +#define BOOST_PP_R1_40(M,D) BOOST_PP_R1_39(M,D) M(39,D) +#define BOOST_PP_R1_41(M,D) BOOST_PP_R1_40(M,D) M(40,D) +#define BOOST_PP_R1_42(M,D) BOOST_PP_R1_41(M,D) M(41,D) +#define BOOST_PP_R1_43(M,D) BOOST_PP_R1_42(M,D) M(42,D) +#define BOOST_PP_R1_44(M,D) BOOST_PP_R1_43(M,D) M(43,D) +#define BOOST_PP_R1_45(M,D) BOOST_PP_R1_44(M,D) M(44,D) +#define BOOST_PP_R1_46(M,D) BOOST_PP_R1_45(M,D) M(45,D) +#define BOOST_PP_R1_47(M,D) BOOST_PP_R1_46(M,D) M(46,D) +#define BOOST_PP_R1_48(M,D) BOOST_PP_R1_47(M,D) M(47,D) +#define BOOST_PP_R1_49(M,D) BOOST_PP_R1_48(M,D) M(48,D) +#define BOOST_PP_R1_50(M,D) BOOST_PP_R1_49(M,D) M(49,D) +#define BOOST_PP_R1_51(M,D) BOOST_PP_R1_50(M,D) M(50,D) +#define BOOST_PP_R1_52(M,D) BOOST_PP_R1_51(M,D) M(51,D) +#define BOOST_PP_R1_53(M,D) BOOST_PP_R1_52(M,D) M(52,D) +#define BOOST_PP_R1_54(M,D) BOOST_PP_R1_53(M,D) M(53,D) +#define BOOST_PP_R1_55(M,D) BOOST_PP_R1_54(M,D) M(54,D) +#define BOOST_PP_R1_56(M,D) BOOST_PP_R1_55(M,D) M(55,D) +#define BOOST_PP_R1_57(M,D) BOOST_PP_R1_56(M,D) M(56,D) +#define BOOST_PP_R1_58(M,D) BOOST_PP_R1_57(M,D) M(57,D) +#define BOOST_PP_R1_59(M,D) BOOST_PP_R1_58(M,D) M(58,D) +#define BOOST_PP_R1_60(M,D) BOOST_PP_R1_59(M,D) M(59,D) +#define BOOST_PP_R1_61(M,D) BOOST_PP_R1_60(M,D) M(60,D) +#define BOOST_PP_R1_62(M,D) BOOST_PP_R1_61(M,D) M(61,D) +#define BOOST_PP_R1_63(M,D) BOOST_PP_R1_62(M,D) M(62,D) +#define BOOST_PP_R1_64(M,D) BOOST_PP_R1_63(M,D) M(63,D) +#define BOOST_PP_R1_65(M,D) BOOST_PP_R1_64(M,D) M(64,D) +#define BOOST_PP_R1_66(M,D) BOOST_PP_R1_65(M,D) M(65,D) +#define BOOST_PP_R1_67(M,D) BOOST_PP_R1_66(M,D) M(66,D) +#define BOOST_PP_R1_68(M,D) BOOST_PP_R1_67(M,D) M(67,D) +#define BOOST_PP_R1_69(M,D) BOOST_PP_R1_68(M,D) M(68,D) +#define BOOST_PP_R1_70(M,D) BOOST_PP_R1_69(M,D) M(69,D) +#define BOOST_PP_R1_71(M,D) BOOST_PP_R1_70(M,D) M(70,D) +#define BOOST_PP_R1_72(M,D) BOOST_PP_R1_71(M,D) M(71,D) +#define BOOST_PP_R1_73(M,D) BOOST_PP_R1_72(M,D) M(72,D) +#define BOOST_PP_R1_74(M,D) BOOST_PP_R1_73(M,D) M(73,D) +#define BOOST_PP_R1_75(M,D) BOOST_PP_R1_74(M,D) M(74,D) +#define BOOST_PP_R1_76(M,D) BOOST_PP_R1_75(M,D) M(75,D) +#define BOOST_PP_R1_77(M,D) BOOST_PP_R1_76(M,D) M(76,D) +#define BOOST_PP_R1_78(M,D) BOOST_PP_R1_77(M,D) M(77,D) +#define BOOST_PP_R1_79(M,D) BOOST_PP_R1_78(M,D) M(78,D) +#define BOOST_PP_R1_80(M,D) BOOST_PP_R1_79(M,D) M(79,D) +#define BOOST_PP_R1_81(M,D) BOOST_PP_R1_80(M,D) M(80,D) +#define BOOST_PP_R1_82(M,D) BOOST_PP_R1_81(M,D) M(81,D) +#define BOOST_PP_R1_83(M,D) BOOST_PP_R1_82(M,D) M(82,D) +#define BOOST_PP_R1_84(M,D) BOOST_PP_R1_83(M,D) M(83,D) +#define BOOST_PP_R1_85(M,D) BOOST_PP_R1_84(M,D) M(84,D) +#define BOOST_PP_R1_86(M,D) BOOST_PP_R1_85(M,D) M(85,D) +#define BOOST_PP_R1_87(M,D) BOOST_PP_R1_86(M,D) M(86,D) +#define BOOST_PP_R1_88(M,D) BOOST_PP_R1_87(M,D) M(87,D) +#define BOOST_PP_R1_89(M,D) BOOST_PP_R1_88(M,D) M(88,D) +#define BOOST_PP_R1_90(M,D) BOOST_PP_R1_89(M,D) M(89,D) +#define BOOST_PP_R1_91(M,D) BOOST_PP_R1_90(M,D) M(90,D) +#define BOOST_PP_R1_92(M,D) BOOST_PP_R1_91(M,D) M(91,D) +#define BOOST_PP_R1_93(M,D) BOOST_PP_R1_92(M,D) M(92,D) +#define BOOST_PP_R1_94(M,D) BOOST_PP_R1_93(M,D) M(93,D) +#define BOOST_PP_R1_95(M,D) BOOST_PP_R1_94(M,D) M(94,D) +#define BOOST_PP_R1_96(M,D) BOOST_PP_R1_95(M,D) M(95,D) +#define BOOST_PP_R1_97(M,D) BOOST_PP_R1_96(M,D) M(96,D) +#define BOOST_PP_R1_98(M,D) BOOST_PP_R1_97(M,D) M(97,D) +#define BOOST_PP_R1_99(M,D) BOOST_PP_R1_98(M,D) M(98,D) +#define BOOST_PP_R1_100(M,D) BOOST_PP_R1_99(M,D) M(99,D) +#define BOOST_PP_R1_101(M,D) BOOST_PP_R1_100(M,D) M(100,D) +#define BOOST_PP_R1_102(M,D) BOOST_PP_R1_101(M,D) M(101,D) +#define BOOST_PP_R1_103(M,D) BOOST_PP_R1_102(M,D) M(102,D) +#define BOOST_PP_R1_104(M,D) BOOST_PP_R1_103(M,D) M(103,D) +#define BOOST_PP_R1_105(M,D) BOOST_PP_R1_104(M,D) M(104,D) +#define BOOST_PP_R1_106(M,D) BOOST_PP_R1_105(M,D) M(105,D) +#define BOOST_PP_R1_107(M,D) BOOST_PP_R1_106(M,D) M(106,D) +#define BOOST_PP_R1_108(M,D) BOOST_PP_R1_107(M,D) M(107,D) +#define BOOST_PP_R1_109(M,D) BOOST_PP_R1_108(M,D) M(108,D) +#define BOOST_PP_R1_110(M,D) BOOST_PP_R1_109(M,D) M(109,D) +#define BOOST_PP_R1_111(M,D) BOOST_PP_R1_110(M,D) M(110,D) +#define BOOST_PP_R1_112(M,D) BOOST_PP_R1_111(M,D) M(111,D) +#define BOOST_PP_R1_113(M,D) BOOST_PP_R1_112(M,D) M(112,D) +#define BOOST_PP_R1_114(M,D) BOOST_PP_R1_113(M,D) M(113,D) +#define BOOST_PP_R1_115(M,D) BOOST_PP_R1_114(M,D) M(114,D) +#define BOOST_PP_R1_116(M,D) BOOST_PP_R1_115(M,D) M(115,D) +#define BOOST_PP_R1_117(M,D) BOOST_PP_R1_116(M,D) M(116,D) +#define BOOST_PP_R1_118(M,D) BOOST_PP_R1_117(M,D) M(117,D) +#define BOOST_PP_R1_119(M,D) BOOST_PP_R1_118(M,D) M(118,D) +#define BOOST_PP_R1_120(M,D) BOOST_PP_R1_119(M,D) M(119,D) +#define BOOST_PP_R1_121(M,D) BOOST_PP_R1_120(M,D) M(120,D) +#define BOOST_PP_R1_122(M,D) BOOST_PP_R1_121(M,D) M(121,D) +#define BOOST_PP_R1_123(M,D) BOOST_PP_R1_122(M,D) M(122,D) +#define BOOST_PP_R1_124(M,D) BOOST_PP_R1_123(M,D) M(123,D) +#define BOOST_PP_R1_125(M,D) BOOST_PP_R1_124(M,D) M(124,D) +#define BOOST_PP_R1_126(M,D) BOOST_PP_R1_125(M,D) M(125,D) +#define BOOST_PP_R1_127(M,D) BOOST_PP_R1_126(M,D) M(126,D) +#define BOOST_PP_R1_128(M,D) BOOST_PP_R1_127(M,D) M(127,D) + +#define BOOST_PP_REPEAT2(C,M,D) BOOST_PP_REPEAT_AUTO_REC2(BOOST_PP_R2_DELAY(C),(M,D)) +#define BOOST_PP_R2_DELAY(C) BOOST_PP_R2_##C +#define BOOST_PP_R2_0(M,D) +#define BOOST_PP_R2_1(M,D) M(0,D) +#define BOOST_PP_R2_2(M,D) M(0,D) M(1,D) +#define BOOST_PP_R2_3(M,D) M(0,D) M(1,D) M(2,D) +#define BOOST_PP_R2_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D) +#define BOOST_PP_R2_5(M,D) BOOST_PP_R2_4(M,D) M(4,D) +#define BOOST_PP_R2_6(M,D) BOOST_PP_R2_5(M,D) M(5,D) +#define BOOST_PP_R2_7(M,D) BOOST_PP_R2_6(M,D) M(6,D) +#define BOOST_PP_R2_8(M,D) BOOST_PP_R2_7(M,D) M(7,D) +#define BOOST_PP_R2_9(M,D) BOOST_PP_R2_8(M,D) M(8,D) +#define BOOST_PP_R2_10(M,D) BOOST_PP_R2_9(M,D) M(9,D) +#define BOOST_PP_R2_11(M,D) BOOST_PP_R2_10(M,D) M(10,D) +#define BOOST_PP_R2_12(M,D) BOOST_PP_R2_11(M,D) M(11,D) +#define BOOST_PP_R2_13(M,D) BOOST_PP_R2_12(M,D) M(12,D) +#define BOOST_PP_R2_14(M,D) BOOST_PP_R2_13(M,D) M(13,D) +#define BOOST_PP_R2_15(M,D) BOOST_PP_R2_14(M,D) M(14,D) +#define BOOST_PP_R2_16(M,D) BOOST_PP_R2_15(M,D) M(15,D) +#define BOOST_PP_R2_17(M,D) BOOST_PP_R2_16(M,D) M(16,D) +#define BOOST_PP_R2_18(M,D) BOOST_PP_R2_17(M,D) M(17,D) +#define BOOST_PP_R2_19(M,D) BOOST_PP_R2_18(M,D) M(18,D) +#define BOOST_PP_R2_20(M,D) BOOST_PP_R2_19(M,D) M(19,D) +#define BOOST_PP_R2_21(M,D) BOOST_PP_R2_20(M,D) M(20,D) +#define BOOST_PP_R2_22(M,D) BOOST_PP_R2_21(M,D) M(21,D) +#define BOOST_PP_R2_23(M,D) BOOST_PP_R2_22(M,D) M(22,D) +#define BOOST_PP_R2_24(M,D) BOOST_PP_R2_23(M,D) M(23,D) +#define BOOST_PP_R2_25(M,D) BOOST_PP_R2_24(M,D) M(24,D) +#define BOOST_PP_R2_26(M,D) BOOST_PP_R2_25(M,D) M(25,D) +#define BOOST_PP_R2_27(M,D) BOOST_PP_R2_26(M,D) M(26,D) +#define BOOST_PP_R2_28(M,D) BOOST_PP_R2_27(M,D) M(27,D) +#define BOOST_PP_R2_29(M,D) BOOST_PP_R2_28(M,D) M(28,D) +#define BOOST_PP_R2_30(M,D) BOOST_PP_R2_29(M,D) M(29,D) +#define BOOST_PP_R2_31(M,D) BOOST_PP_R2_30(M,D) M(30,D) +#define BOOST_PP_R2_32(M,D) BOOST_PP_R2_31(M,D) M(31,D) +#define BOOST_PP_R2_33(M,D) BOOST_PP_R2_32(M,D) M(32,D) +#define BOOST_PP_R2_34(M,D) BOOST_PP_R2_33(M,D) M(33,D) +#define BOOST_PP_R2_35(M,D) BOOST_PP_R2_34(M,D) M(34,D) +#define BOOST_PP_R2_36(M,D) BOOST_PP_R2_35(M,D) M(35,D) +#define BOOST_PP_R2_37(M,D) BOOST_PP_R2_36(M,D) M(36,D) +#define BOOST_PP_R2_38(M,D) BOOST_PP_R2_37(M,D) M(37,D) +#define BOOST_PP_R2_39(M,D) BOOST_PP_R2_38(M,D) M(38,D) +#define BOOST_PP_R2_40(M,D) BOOST_PP_R2_39(M,D) M(39,D) +#define BOOST_PP_R2_41(M,D) BOOST_PP_R2_40(M,D) M(40,D) +#define BOOST_PP_R2_42(M,D) BOOST_PP_R2_41(M,D) M(41,D) +#define BOOST_PP_R2_43(M,D) BOOST_PP_R2_42(M,D) M(42,D) +#define BOOST_PP_R2_44(M,D) BOOST_PP_R2_43(M,D) M(43,D) +#define BOOST_PP_R2_45(M,D) BOOST_PP_R2_44(M,D) M(44,D) +#define BOOST_PP_R2_46(M,D) BOOST_PP_R2_45(M,D) M(45,D) +#define BOOST_PP_R2_47(M,D) BOOST_PP_R2_46(M,D) M(46,D) +#define BOOST_PP_R2_48(M,D) BOOST_PP_R2_47(M,D) M(47,D) +#define BOOST_PP_R2_49(M,D) BOOST_PP_R2_48(M,D) M(48,D) +#define BOOST_PP_R2_50(M,D) BOOST_PP_R2_49(M,D) M(49,D) +#define BOOST_PP_R2_51(M,D) BOOST_PP_R2_50(M,D) M(50,D) +#define BOOST_PP_R2_52(M,D) BOOST_PP_R2_51(M,D) M(51,D) +#define BOOST_PP_R2_53(M,D) BOOST_PP_R2_52(M,D) M(52,D) +#define BOOST_PP_R2_54(M,D) BOOST_PP_R2_53(M,D) M(53,D) +#define BOOST_PP_R2_55(M,D) BOOST_PP_R2_54(M,D) M(54,D) +#define BOOST_PP_R2_56(M,D) BOOST_PP_R2_55(M,D) M(55,D) +#define BOOST_PP_R2_57(M,D) BOOST_PP_R2_56(M,D) M(56,D) +#define BOOST_PP_R2_58(M,D) BOOST_PP_R2_57(M,D) M(57,D) +#define BOOST_PP_R2_59(M,D) BOOST_PP_R2_58(M,D) M(58,D) +#define BOOST_PP_R2_60(M,D) BOOST_PP_R2_59(M,D) M(59,D) +#define BOOST_PP_R2_61(M,D) BOOST_PP_R2_60(M,D) M(60,D) +#define BOOST_PP_R2_62(M,D) BOOST_PP_R2_61(M,D) M(61,D) +#define BOOST_PP_R2_63(M,D) BOOST_PP_R2_62(M,D) M(62,D) +#define BOOST_PP_R2_64(M,D) BOOST_PP_R2_63(M,D) M(63,D) +#define BOOST_PP_R2_65(M,D) BOOST_PP_R2_64(M,D) M(64,D) +#define BOOST_PP_R2_66(M,D) BOOST_PP_R2_65(M,D) M(65,D) +#define BOOST_PP_R2_67(M,D) BOOST_PP_R2_66(M,D) M(66,D) +#define BOOST_PP_R2_68(M,D) BOOST_PP_R2_67(M,D) M(67,D) +#define BOOST_PP_R2_69(M,D) BOOST_PP_R2_68(M,D) M(68,D) +#define BOOST_PP_R2_70(M,D) BOOST_PP_R2_69(M,D) M(69,D) +#define BOOST_PP_R2_71(M,D) BOOST_PP_R2_70(M,D) M(70,D) +#define BOOST_PP_R2_72(M,D) BOOST_PP_R2_71(M,D) M(71,D) +#define BOOST_PP_R2_73(M,D) BOOST_PP_R2_72(M,D) M(72,D) +#define BOOST_PP_R2_74(M,D) BOOST_PP_R2_73(M,D) M(73,D) +#define BOOST_PP_R2_75(M,D) BOOST_PP_R2_74(M,D) M(74,D) +#define BOOST_PP_R2_76(M,D) BOOST_PP_R2_75(M,D) M(75,D) +#define BOOST_PP_R2_77(M,D) BOOST_PP_R2_76(M,D) M(76,D) +#define BOOST_PP_R2_78(M,D) BOOST_PP_R2_77(M,D) M(77,D) +#define BOOST_PP_R2_79(M,D) BOOST_PP_R2_78(M,D) M(78,D) +#define BOOST_PP_R2_80(M,D) BOOST_PP_R2_79(M,D) M(79,D) +#define BOOST_PP_R2_81(M,D) BOOST_PP_R2_80(M,D) M(80,D) +#define BOOST_PP_R2_82(M,D) BOOST_PP_R2_81(M,D) M(81,D) +#define BOOST_PP_R2_83(M,D) BOOST_PP_R2_82(M,D) M(82,D) +#define BOOST_PP_R2_84(M,D) BOOST_PP_R2_83(M,D) M(83,D) +#define BOOST_PP_R2_85(M,D) BOOST_PP_R2_84(M,D) M(84,D) +#define BOOST_PP_R2_86(M,D) BOOST_PP_R2_85(M,D) M(85,D) +#define BOOST_PP_R2_87(M,D) BOOST_PP_R2_86(M,D) M(86,D) +#define BOOST_PP_R2_88(M,D) BOOST_PP_R2_87(M,D) M(87,D) +#define BOOST_PP_R2_89(M,D) BOOST_PP_R2_88(M,D) M(88,D) +#define BOOST_PP_R2_90(M,D) BOOST_PP_R2_89(M,D) M(89,D) +#define BOOST_PP_R2_91(M,D) BOOST_PP_R2_90(M,D) M(90,D) +#define BOOST_PP_R2_92(M,D) BOOST_PP_R2_91(M,D) M(91,D) +#define BOOST_PP_R2_93(M,D) BOOST_PP_R2_92(M,D) M(92,D) +#define BOOST_PP_R2_94(M,D) BOOST_PP_R2_93(M,D) M(93,D) +#define BOOST_PP_R2_95(M,D) BOOST_PP_R2_94(M,D) M(94,D) +#define BOOST_PP_R2_96(M,D) BOOST_PP_R2_95(M,D) M(95,D) +#define BOOST_PP_R2_97(M,D) BOOST_PP_R2_96(M,D) M(96,D) +#define BOOST_PP_R2_98(M,D) BOOST_PP_R2_97(M,D) M(97,D) +#define BOOST_PP_R2_99(M,D) BOOST_PP_R2_98(M,D) M(98,D) +#define BOOST_PP_R2_100(M,D) BOOST_PP_R2_99(M,D) M(99,D) +#define BOOST_PP_R2_101(M,D) BOOST_PP_R2_100(M,D) M(100,D) +#define BOOST_PP_R2_102(M,D) BOOST_PP_R2_101(M,D) M(101,D) +#define BOOST_PP_R2_103(M,D) BOOST_PP_R2_102(M,D) M(102,D) +#define BOOST_PP_R2_104(M,D) BOOST_PP_R2_103(M,D) M(103,D) +#define BOOST_PP_R2_105(M,D) BOOST_PP_R2_104(M,D) M(104,D) +#define BOOST_PP_R2_106(M,D) BOOST_PP_R2_105(M,D) M(105,D) +#define BOOST_PP_R2_107(M,D) BOOST_PP_R2_106(M,D) M(106,D) +#define BOOST_PP_R2_108(M,D) BOOST_PP_R2_107(M,D) M(107,D) +#define BOOST_PP_R2_109(M,D) BOOST_PP_R2_108(M,D) M(108,D) +#define BOOST_PP_R2_110(M,D) BOOST_PP_R2_109(M,D) M(109,D) +#define BOOST_PP_R2_111(M,D) BOOST_PP_R2_110(M,D) M(110,D) +#define BOOST_PP_R2_112(M,D) BOOST_PP_R2_111(M,D) M(111,D) +#define BOOST_PP_R2_113(M,D) BOOST_PP_R2_112(M,D) M(112,D) +#define BOOST_PP_R2_114(M,D) BOOST_PP_R2_113(M,D) M(113,D) +#define BOOST_PP_R2_115(M,D) BOOST_PP_R2_114(M,D) M(114,D) +#define BOOST_PP_R2_116(M,D) BOOST_PP_R2_115(M,D) M(115,D) +#define BOOST_PP_R2_117(M,D) BOOST_PP_R2_116(M,D) M(116,D) +#define BOOST_PP_R2_118(M,D) BOOST_PP_R2_117(M,D) M(117,D) +#define BOOST_PP_R2_119(M,D) BOOST_PP_R2_118(M,D) M(118,D) +#define BOOST_PP_R2_120(M,D) BOOST_PP_R2_119(M,D) M(119,D) +#define BOOST_PP_R2_121(M,D) BOOST_PP_R2_120(M,D) M(120,D) +#define BOOST_PP_R2_122(M,D) BOOST_PP_R2_121(M,D) M(121,D) +#define BOOST_PP_R2_123(M,D) BOOST_PP_R2_122(M,D) M(122,D) +#define BOOST_PP_R2_124(M,D) BOOST_PP_R2_123(M,D) M(123,D) +#define BOOST_PP_R2_125(M,D) BOOST_PP_R2_124(M,D) M(124,D) +#define BOOST_PP_R2_126(M,D) BOOST_PP_R2_125(M,D) M(125,D) +#define BOOST_PP_R2_127(M,D) BOOST_PP_R2_126(M,D) M(126,D) +#define BOOST_PP_R2_128(M,D) BOOST_PP_R2_127(M,D) M(127,D) + +#define BOOST_PP_REPEAT3(C,M,D) BOOST_PP_REPEAT_AUTO_REC3(BOOST_PP_R3_DELAY(C),(M,D)) +#define BOOST_PP_R3_DELAY(C) BOOST_PP_R3_##C +#define BOOST_PP_R3_0(M,D) +#define BOOST_PP_R3_1(M,D) M(0,D) +#define BOOST_PP_R3_2(M,D) M(0,D) M(1,D) +#define BOOST_PP_R3_3(M,D) M(0,D) M(1,D) M(2,D) +#define BOOST_PP_R3_4(M,D) M(0,D) M(1,D) M(2,D) M(3,D) +#define BOOST_PP_R3_5(M,D) BOOST_PP_R3_4(M,D) M(4,D) +#define BOOST_PP_R3_6(M,D) BOOST_PP_R3_5(M,D) M(5,D) +#define BOOST_PP_R3_7(M,D) BOOST_PP_R3_6(M,D) M(6,D) +#define BOOST_PP_R3_8(M,D) BOOST_PP_R3_7(M,D) M(7,D) +#define BOOST_PP_R3_9(M,D) BOOST_PP_R3_8(M,D) M(8,D) +#define BOOST_PP_R3_10(M,D) BOOST_PP_R3_9(M,D) M(9,D) +#define BOOST_PP_R3_11(M,D) BOOST_PP_R3_10(M,D) M(10,D) +#define BOOST_PP_R3_12(M,D) BOOST_PP_R3_11(M,D) M(11,D) +#define BOOST_PP_R3_13(M,D) BOOST_PP_R3_12(M,D) M(12,D) +#define BOOST_PP_R3_14(M,D) BOOST_PP_R3_13(M,D) M(13,D) +#define BOOST_PP_R3_15(M,D) BOOST_PP_R3_14(M,D) M(14,D) +#define BOOST_PP_R3_16(M,D) BOOST_PP_R3_15(M,D) M(15,D) +#define BOOST_PP_R3_17(M,D) BOOST_PP_R3_16(M,D) M(16,D) +#define BOOST_PP_R3_18(M,D) BOOST_PP_R3_17(M,D) M(17,D) +#define BOOST_PP_R3_19(M,D) BOOST_PP_R3_18(M,D) M(18,D) +#define BOOST_PP_R3_20(M,D) BOOST_PP_R3_19(M,D) M(19,D) +#define BOOST_PP_R3_21(M,D) BOOST_PP_R3_20(M,D) M(20,D) +#define BOOST_PP_R3_22(M,D) BOOST_PP_R3_21(M,D) M(21,D) +#define BOOST_PP_R3_23(M,D) BOOST_PP_R3_22(M,D) M(22,D) +#define BOOST_PP_R3_24(M,D) BOOST_PP_R3_23(M,D) M(23,D) +#define BOOST_PP_R3_25(M,D) BOOST_PP_R3_24(M,D) M(24,D) +#define BOOST_PP_R3_26(M,D) BOOST_PP_R3_25(M,D) M(25,D) +#define BOOST_PP_R3_27(M,D) BOOST_PP_R3_26(M,D) M(26,D) +#define BOOST_PP_R3_28(M,D) BOOST_PP_R3_27(M,D) M(27,D) +#define BOOST_PP_R3_29(M,D) BOOST_PP_R3_28(M,D) M(28,D) +#define BOOST_PP_R3_30(M,D) BOOST_PP_R3_29(M,D) M(29,D) +#define BOOST_PP_R3_31(M,D) BOOST_PP_R3_30(M,D) M(30,D) +#define BOOST_PP_R3_32(M,D) BOOST_PP_R3_31(M,D) M(31,D) +#define BOOST_PP_R3_33(M,D) BOOST_PP_R3_32(M,D) M(32,D) +#define BOOST_PP_R3_34(M,D) BOOST_PP_R3_33(M,D) M(33,D) +#define BOOST_PP_R3_35(M,D) BOOST_PP_R3_34(M,D) M(34,D) +#define BOOST_PP_R3_36(M,D) BOOST_PP_R3_35(M,D) M(35,D) +#define BOOST_PP_R3_37(M,D) BOOST_PP_R3_36(M,D) M(36,D) +#define BOOST_PP_R3_38(M,D) BOOST_PP_R3_37(M,D) M(37,D) +#define BOOST_PP_R3_39(M,D) BOOST_PP_R3_38(M,D) M(38,D) +#define BOOST_PP_R3_40(M,D) BOOST_PP_R3_39(M,D) M(39,D) +#define BOOST_PP_R3_41(M,D) BOOST_PP_R3_40(M,D) M(40,D) +#define BOOST_PP_R3_42(M,D) BOOST_PP_R3_41(M,D) M(41,D) +#define BOOST_PP_R3_43(M,D) BOOST_PP_R3_42(M,D) M(42,D) +#define BOOST_PP_R3_44(M,D) BOOST_PP_R3_43(M,D) M(43,D) +#define BOOST_PP_R3_45(M,D) BOOST_PP_R3_44(M,D) M(44,D) +#define BOOST_PP_R3_46(M,D) BOOST_PP_R3_45(M,D) M(45,D) +#define BOOST_PP_R3_47(M,D) BOOST_PP_R3_46(M,D) M(46,D) +#define BOOST_PP_R3_48(M,D) BOOST_PP_R3_47(M,D) M(47,D) +#define BOOST_PP_R3_49(M,D) BOOST_PP_R3_48(M,D) M(48,D) +#define BOOST_PP_R3_50(M,D) BOOST_PP_R3_49(M,D) M(49,D) +#define BOOST_PP_R3_51(M,D) BOOST_PP_R3_50(M,D) M(50,D) +#define BOOST_PP_R3_52(M,D) BOOST_PP_R3_51(M,D) M(51,D) +#define BOOST_PP_R3_53(M,D) BOOST_PP_R3_52(M,D) M(52,D) +#define BOOST_PP_R3_54(M,D) BOOST_PP_R3_53(M,D) M(53,D) +#define BOOST_PP_R3_55(M,D) BOOST_PP_R3_54(M,D) M(54,D) +#define BOOST_PP_R3_56(M,D) BOOST_PP_R3_55(M,D) M(55,D) +#define BOOST_PP_R3_57(M,D) BOOST_PP_R3_56(M,D) M(56,D) +#define BOOST_PP_R3_58(M,D) BOOST_PP_R3_57(M,D) M(57,D) +#define BOOST_PP_R3_59(M,D) BOOST_PP_R3_58(M,D) M(58,D) +#define BOOST_PP_R3_60(M,D) BOOST_PP_R3_59(M,D) M(59,D) +#define BOOST_PP_R3_61(M,D) BOOST_PP_R3_60(M,D) M(60,D) +#define BOOST_PP_R3_62(M,D) BOOST_PP_R3_61(M,D) M(61,D) +#define BOOST_PP_R3_63(M,D) BOOST_PP_R3_62(M,D) M(62,D) +#define BOOST_PP_R3_64(M,D) BOOST_PP_R3_63(M,D) M(63,D) +#define BOOST_PP_R3_65(M,D) BOOST_PP_R3_64(M,D) M(64,D) +#define BOOST_PP_R3_66(M,D) BOOST_PP_R3_65(M,D) M(65,D) +#define BOOST_PP_R3_67(M,D) BOOST_PP_R3_66(M,D) M(66,D) +#define BOOST_PP_R3_68(M,D) BOOST_PP_R3_67(M,D) M(67,D) +#define BOOST_PP_R3_69(M,D) BOOST_PP_R3_68(M,D) M(68,D) +#define BOOST_PP_R3_70(M,D) BOOST_PP_R3_69(M,D) M(69,D) +#define BOOST_PP_R3_71(M,D) BOOST_PP_R3_70(M,D) M(70,D) +#define BOOST_PP_R3_72(M,D) BOOST_PP_R3_71(M,D) M(71,D) +#define BOOST_PP_R3_73(M,D) BOOST_PP_R3_72(M,D) M(72,D) +#define BOOST_PP_R3_74(M,D) BOOST_PP_R3_73(M,D) M(73,D) +#define BOOST_PP_R3_75(M,D) BOOST_PP_R3_74(M,D) M(74,D) +#define BOOST_PP_R3_76(M,D) BOOST_PP_R3_75(M,D) M(75,D) +#define BOOST_PP_R3_77(M,D) BOOST_PP_R3_76(M,D) M(76,D) +#define BOOST_PP_R3_78(M,D) BOOST_PP_R3_77(M,D) M(77,D) +#define BOOST_PP_R3_79(M,D) BOOST_PP_R3_78(M,D) M(78,D) +#define BOOST_PP_R3_80(M,D) BOOST_PP_R3_79(M,D) M(79,D) +#define BOOST_PP_R3_81(M,D) BOOST_PP_R3_80(M,D) M(80,D) +#define BOOST_PP_R3_82(M,D) BOOST_PP_R3_81(M,D) M(81,D) +#define BOOST_PP_R3_83(M,D) BOOST_PP_R3_82(M,D) M(82,D) +#define BOOST_PP_R3_84(M,D) BOOST_PP_R3_83(M,D) M(83,D) +#define BOOST_PP_R3_85(M,D) BOOST_PP_R3_84(M,D) M(84,D) +#define BOOST_PP_R3_86(M,D) BOOST_PP_R3_85(M,D) M(85,D) +#define BOOST_PP_R3_87(M,D) BOOST_PP_R3_86(M,D) M(86,D) +#define BOOST_PP_R3_88(M,D) BOOST_PP_R3_87(M,D) M(87,D) +#define BOOST_PP_R3_89(M,D) BOOST_PP_R3_88(M,D) M(88,D) +#define BOOST_PP_R3_90(M,D) BOOST_PP_R3_89(M,D) M(89,D) +#define BOOST_PP_R3_91(M,D) BOOST_PP_R3_90(M,D) M(90,D) +#define BOOST_PP_R3_92(M,D) BOOST_PP_R3_91(M,D) M(91,D) +#define BOOST_PP_R3_93(M,D) BOOST_PP_R3_92(M,D) M(92,D) +#define BOOST_PP_R3_94(M,D) BOOST_PP_R3_93(M,D) M(93,D) +#define BOOST_PP_R3_95(M,D) BOOST_PP_R3_94(M,D) M(94,D) +#define BOOST_PP_R3_96(M,D) BOOST_PP_R3_95(M,D) M(95,D) +#define BOOST_PP_R3_97(M,D) BOOST_PP_R3_96(M,D) M(96,D) +#define BOOST_PP_R3_98(M,D) BOOST_PP_R3_97(M,D) M(97,D) +#define BOOST_PP_R3_99(M,D) BOOST_PP_R3_98(M,D) M(98,D) +#define BOOST_PP_R3_100(M,D) BOOST_PP_R3_99(M,D) M(99,D) +#define BOOST_PP_R3_101(M,D) BOOST_PP_R3_100(M,D) M(100,D) +#define BOOST_PP_R3_102(M,D) BOOST_PP_R3_101(M,D) M(101,D) +#define BOOST_PP_R3_103(M,D) BOOST_PP_R3_102(M,D) M(102,D) +#define BOOST_PP_R3_104(M,D) BOOST_PP_R3_103(M,D) M(103,D) +#define BOOST_PP_R3_105(M,D) BOOST_PP_R3_104(M,D) M(104,D) +#define BOOST_PP_R3_106(M,D) BOOST_PP_R3_105(M,D) M(105,D) +#define BOOST_PP_R3_107(M,D) BOOST_PP_R3_106(M,D) M(106,D) +#define BOOST_PP_R3_108(M,D) BOOST_PP_R3_107(M,D) M(107,D) +#define BOOST_PP_R3_109(M,D) BOOST_PP_R3_108(M,D) M(108,D) +#define BOOST_PP_R3_110(M,D) BOOST_PP_R3_109(M,D) M(109,D) +#define BOOST_PP_R3_111(M,D) BOOST_PP_R3_110(M,D) M(110,D) +#define BOOST_PP_R3_112(M,D) BOOST_PP_R3_111(M,D) M(111,D) +#define BOOST_PP_R3_113(M,D) BOOST_PP_R3_112(M,D) M(112,D) +#define BOOST_PP_R3_114(M,D) BOOST_PP_R3_113(M,D) M(113,D) +#define BOOST_PP_R3_115(M,D) BOOST_PP_R3_114(M,D) M(114,D) +#define BOOST_PP_R3_116(M,D) BOOST_PP_R3_115(M,D) M(115,D) +#define BOOST_PP_R3_117(M,D) BOOST_PP_R3_116(M,D) M(116,D) +#define BOOST_PP_R3_118(M,D) BOOST_PP_R3_117(M,D) M(117,D) +#define BOOST_PP_R3_119(M,D) BOOST_PP_R3_118(M,D) M(118,D) +#define BOOST_PP_R3_120(M,D) BOOST_PP_R3_119(M,D) M(119,D) +#define BOOST_PP_R3_121(M,D) BOOST_PP_R3_120(M,D) M(120,D) +#define BOOST_PP_R3_122(M,D) BOOST_PP_R3_121(M,D) M(121,D) +#define BOOST_PP_R3_123(M,D) BOOST_PP_R3_122(M,D) M(122,D) +#define BOOST_PP_R3_124(M,D) BOOST_PP_R3_123(M,D) M(123,D) +#define BOOST_PP_R3_125(M,D) BOOST_PP_R3_124(M,D) M(124,D) +#define BOOST_PP_R3_126(M,D) BOOST_PP_R3_125(M,D) M(125,D) +#define BOOST_PP_R3_127(M,D) BOOST_PP_R3_126(M,D) M(126,D) +#define BOOST_PP_R3_128(M,D) BOOST_PP_R3_127(M,D) M(127,D) + +/**Obsolete, just use BOOST_PP_REPEAT().
*/ +#define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT +/**Obsolete, just use BOOST_PP_REPEAT().
*/ +#define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT #endif diff --git a/include/boost/preprocessor/repeat_2nd.hpp b/include/boost/preprocessor/repeat_2nd.hpp index 6489cef..2edbe3d 100644 --- a/include/boost/preprocessor/repeat_2nd.hpp +++ b/include/boost/preprocessor/repeat_2nd.hpp @@ -13,146 +13,12 @@ * See http://www.boost.org for most recent version. */ -/**Same as BOOST_PP_REPEAT(), but implemented independently.
+/**This header is obsolete. Use the following code instead.
-+#include <boost/preprocessor/repeat.hpp> +*/ -#define BOOST_PP_REPEAT_2ND(COUNT,MACRO,DATA) BOOST_PP_REPEAT_2ND_DELAY(COUNT)(MACRO,DATA) -#define BOOST_PP_REPEAT_2ND_DELAY(C) BOOST_PP_REPEAT_2ND##C -#define BOOST_PP_REPEAT_2ND0(M,D) -#define BOOST_PP_REPEAT_2ND1(M,D) M(0,D) -#define BOOST_PP_REPEAT_2ND2(M,D) M(0,D) M(1,D) -#define BOOST_PP_REPEAT_2ND3(M,D) M(0,D) M(1,D) M(2,D) -#define BOOST_PP_REPEAT_2ND4(M,D) M(0,D) M(1,D) M(2,D) M(3,D) -#define BOOST_PP_REPEAT_2ND5(M,D) BOOST_PP_REPEAT_2ND4(M,D) M(4,D) -#define BOOST_PP_REPEAT_2ND6(M,D) BOOST_PP_REPEAT_2ND5(M,D) M(5,D) -#define BOOST_PP_REPEAT_2ND7(M,D) BOOST_PP_REPEAT_2ND6(M,D) M(6,D) -#define BOOST_PP_REPEAT_2ND8(M,D) BOOST_PP_REPEAT_2ND7(M,D) M(7,D) -#define BOOST_PP_REPEAT_2ND9(M,D) BOOST_PP_REPEAT_2ND8(M,D) M(8,D) -#define BOOST_PP_REPEAT_2ND10(M,D) BOOST_PP_REPEAT_2ND9(M,D) M(9,D) -#define BOOST_PP_REPEAT_2ND11(M,D) BOOST_PP_REPEAT_2ND10(M,D) M(10,D) -#define BOOST_PP_REPEAT_2ND12(M,D) BOOST_PP_REPEAT_2ND11(M,D) M(11,D) -#define BOOST_PP_REPEAT_2ND13(M,D) BOOST_PP_REPEAT_2ND12(M,D) M(12,D) -#define BOOST_PP_REPEAT_2ND14(M,D) BOOST_PP_REPEAT_2ND13(M,D) M(13,D) -#define BOOST_PP_REPEAT_2ND15(M,D) BOOST_PP_REPEAT_2ND14(M,D) M(14,D) -#define BOOST_PP_REPEAT_2ND16(M,D) BOOST_PP_REPEAT_2ND15(M,D) M(15,D) -#define BOOST_PP_REPEAT_2ND17(M,D) BOOST_PP_REPEAT_2ND16(M,D) M(16,D) -#define BOOST_PP_REPEAT_2ND18(M,D) BOOST_PP_REPEAT_2ND17(M,D) M(17,D) -#define BOOST_PP_REPEAT_2ND19(M,D) BOOST_PP_REPEAT_2ND18(M,D) M(18,D) -#define BOOST_PP_REPEAT_2ND20(M,D) BOOST_PP_REPEAT_2ND19(M,D) M(19,D) -#define BOOST_PP_REPEAT_2ND21(M,D) BOOST_PP_REPEAT_2ND20(M,D) M(20,D) -#define BOOST_PP_REPEAT_2ND22(M,D) BOOST_PP_REPEAT_2ND21(M,D) M(21,D) -#define BOOST_PP_REPEAT_2ND23(M,D) BOOST_PP_REPEAT_2ND22(M,D) M(22,D) -#define BOOST_PP_REPEAT_2ND24(M,D) BOOST_PP_REPEAT_2ND23(M,D) M(23,D) -#define BOOST_PP_REPEAT_2ND25(M,D) BOOST_PP_REPEAT_2ND24(M,D) M(24,D) -#define BOOST_PP_REPEAT_2ND26(M,D) BOOST_PP_REPEAT_2ND25(M,D) M(25,D) -#define BOOST_PP_REPEAT_2ND27(M,D) BOOST_PP_REPEAT_2ND26(M,D) M(26,D) -#define BOOST_PP_REPEAT_2ND28(M,D) BOOST_PP_REPEAT_2ND27(M,D) M(27,D) -#define BOOST_PP_REPEAT_2ND29(M,D) BOOST_PP_REPEAT_2ND28(M,D) M(28,D) -#define BOOST_PP_REPEAT_2ND30(M,D) BOOST_PP_REPEAT_2ND29(M,D) M(29,D) -#define BOOST_PP_REPEAT_2ND31(M,D) BOOST_PP_REPEAT_2ND30(M,D) M(30,D) -#define BOOST_PP_REPEAT_2ND32(M,D) BOOST_PP_REPEAT_2ND31(M,D) M(31,D) -#define BOOST_PP_REPEAT_2ND33(M,D) BOOST_PP_REPEAT_2ND32(M,D) M(32,D) -#define BOOST_PP_REPEAT_2ND34(M,D) BOOST_PP_REPEAT_2ND33(M,D) M(33,D) -#define BOOST_PP_REPEAT_2ND35(M,D) BOOST_PP_REPEAT_2ND34(M,D) M(34,D) -#define BOOST_PP_REPEAT_2ND36(M,D) BOOST_PP_REPEAT_2ND35(M,D) M(35,D) -#define BOOST_PP_REPEAT_2ND37(M,D) BOOST_PP_REPEAT_2ND36(M,D) M(36,D) -#define BOOST_PP_REPEAT_2ND38(M,D) BOOST_PP_REPEAT_2ND37(M,D) M(37,D) -#define BOOST_PP_REPEAT_2ND39(M,D) BOOST_PP_REPEAT_2ND38(M,D) M(38,D) -#define BOOST_PP_REPEAT_2ND40(M,D) BOOST_PP_REPEAT_2ND39(M,D) M(39,D) -#define BOOST_PP_REPEAT_2ND41(M,D) BOOST_PP_REPEAT_2ND40(M,D) M(40,D) -#define BOOST_PP_REPEAT_2ND42(M,D) BOOST_PP_REPEAT_2ND41(M,D) M(41,D) -#define BOOST_PP_REPEAT_2ND43(M,D) BOOST_PP_REPEAT_2ND42(M,D) M(42,D) -#define BOOST_PP_REPEAT_2ND44(M,D) BOOST_PP_REPEAT_2ND43(M,D) M(43,D) -#define BOOST_PP_REPEAT_2ND45(M,D) BOOST_PP_REPEAT_2ND44(M,D) M(44,D) -#define BOOST_PP_REPEAT_2ND46(M,D) BOOST_PP_REPEAT_2ND45(M,D) M(45,D) -#define BOOST_PP_REPEAT_2ND47(M,D) BOOST_PP_REPEAT_2ND46(M,D) M(46,D) -#define BOOST_PP_REPEAT_2ND48(M,D) BOOST_PP_REPEAT_2ND47(M,D) M(47,D) -#define BOOST_PP_REPEAT_2ND49(M,D) BOOST_PP_REPEAT_2ND48(M,D) M(48,D) -#define BOOST_PP_REPEAT_2ND50(M,D) BOOST_PP_REPEAT_2ND49(M,D) M(49,D) -#define BOOST_PP_REPEAT_2ND51(M,D) BOOST_PP_REPEAT_2ND50(M,D) M(50,D) -#define BOOST_PP_REPEAT_2ND52(M,D) BOOST_PP_REPEAT_2ND51(M,D) M(51,D) -#define BOOST_PP_REPEAT_2ND53(M,D) BOOST_PP_REPEAT_2ND52(M,D) M(52,D) -#define BOOST_PP_REPEAT_2ND54(M,D) BOOST_PP_REPEAT_2ND53(M,D) M(53,D) -#define BOOST_PP_REPEAT_2ND55(M,D) BOOST_PP_REPEAT_2ND54(M,D) M(54,D) -#define BOOST_PP_REPEAT_2ND56(M,D) BOOST_PP_REPEAT_2ND55(M,D) M(55,D) -#define BOOST_PP_REPEAT_2ND57(M,D) BOOST_PP_REPEAT_2ND56(M,D) M(56,D) -#define BOOST_PP_REPEAT_2ND58(M,D) BOOST_PP_REPEAT_2ND57(M,D) M(57,D) -#define BOOST_PP_REPEAT_2ND59(M,D) BOOST_PP_REPEAT_2ND58(M,D) M(58,D) -#define BOOST_PP_REPEAT_2ND60(M,D) BOOST_PP_REPEAT_2ND59(M,D) M(59,D) -#define BOOST_PP_REPEAT_2ND61(M,D) BOOST_PP_REPEAT_2ND60(M,D) M(60,D) -#define BOOST_PP_REPEAT_2ND62(M,D) BOOST_PP_REPEAT_2ND61(M,D) M(61,D) -#define BOOST_PP_REPEAT_2ND63(M,D) BOOST_PP_REPEAT_2ND62(M,D) M(62,D) -#define BOOST_PP_REPEAT_2ND64(M,D) BOOST_PP_REPEAT_2ND63(M,D) M(63,D) -#define BOOST_PP_REPEAT_2ND65(M,D) BOOST_PP_REPEAT_2ND64(M,D) M(64,D) -#define BOOST_PP_REPEAT_2ND66(M,D) BOOST_PP_REPEAT_2ND65(M,D) M(65,D) -#define BOOST_PP_REPEAT_2ND67(M,D) BOOST_PP_REPEAT_2ND66(M,D) M(66,D) -#define BOOST_PP_REPEAT_2ND68(M,D) BOOST_PP_REPEAT_2ND67(M,D) M(67,D) -#define BOOST_PP_REPEAT_2ND69(M,D) BOOST_PP_REPEAT_2ND68(M,D) M(68,D) -#define BOOST_PP_REPEAT_2ND70(M,D) BOOST_PP_REPEAT_2ND69(M,D) M(69,D) -#define BOOST_PP_REPEAT_2ND71(M,D) BOOST_PP_REPEAT_2ND70(M,D) M(70,D) -#define BOOST_PP_REPEAT_2ND72(M,D) BOOST_PP_REPEAT_2ND71(M,D) M(71,D) -#define BOOST_PP_REPEAT_2ND73(M,D) BOOST_PP_REPEAT_2ND72(M,D) M(72,D) -#define BOOST_PP_REPEAT_2ND74(M,D) BOOST_PP_REPEAT_2ND73(M,D) M(73,D) -#define BOOST_PP_REPEAT_2ND75(M,D) BOOST_PP_REPEAT_2ND74(M,D) M(74,D) -#define BOOST_PP_REPEAT_2ND76(M,D) BOOST_PP_REPEAT_2ND75(M,D) M(75,D) -#define BOOST_PP_REPEAT_2ND77(M,D) BOOST_PP_REPEAT_2ND76(M,D) M(76,D) -#define BOOST_PP_REPEAT_2ND78(M,D) BOOST_PP_REPEAT_2ND77(M,D) M(77,D) -#define BOOST_PP_REPEAT_2ND79(M,D) BOOST_PP_REPEAT_2ND78(M,D) M(78,D) -#define BOOST_PP_REPEAT_2ND80(M,D) BOOST_PP_REPEAT_2ND79(M,D) M(79,D) -#define BOOST_PP_REPEAT_2ND81(M,D) BOOST_PP_REPEAT_2ND80(M,D) M(80,D) -#define BOOST_PP_REPEAT_2ND82(M,D) BOOST_PP_REPEAT_2ND81(M,D) M(81,D) -#define BOOST_PP_REPEAT_2ND83(M,D) BOOST_PP_REPEAT_2ND82(M,D) M(82,D) -#define BOOST_PP_REPEAT_2ND84(M,D) BOOST_PP_REPEAT_2ND83(M,D) M(83,D) -#define BOOST_PP_REPEAT_2ND85(M,D) BOOST_PP_REPEAT_2ND84(M,D) M(84,D) -#define BOOST_PP_REPEAT_2ND86(M,D) BOOST_PP_REPEAT_2ND85(M,D) M(85,D) -#define BOOST_PP_REPEAT_2ND87(M,D) BOOST_PP_REPEAT_2ND86(M,D) M(86,D) -#define BOOST_PP_REPEAT_2ND88(M,D) BOOST_PP_REPEAT_2ND87(M,D) M(87,D) -#define BOOST_PP_REPEAT_2ND89(M,D) BOOST_PP_REPEAT_2ND88(M,D) M(88,D) -#define BOOST_PP_REPEAT_2ND90(M,D) BOOST_PP_REPEAT_2ND89(M,D) M(89,D) -#define BOOST_PP_REPEAT_2ND91(M,D) BOOST_PP_REPEAT_2ND90(M,D) M(90,D) -#define BOOST_PP_REPEAT_2ND92(M,D) BOOST_PP_REPEAT_2ND91(M,D) M(91,D) -#define BOOST_PP_REPEAT_2ND93(M,D) BOOST_PP_REPEAT_2ND92(M,D) M(92,D) -#define BOOST_PP_REPEAT_2ND94(M,D) BOOST_PP_REPEAT_2ND93(M,D) M(93,D) -#define BOOST_PP_REPEAT_2ND95(M,D) BOOST_PP_REPEAT_2ND94(M,D) M(94,D) -#define BOOST_PP_REPEAT_2ND96(M,D) BOOST_PP_REPEAT_2ND95(M,D) M(95,D) -#define BOOST_PP_REPEAT_2ND97(M,D) BOOST_PP_REPEAT_2ND96(M,D) M(96,D) -#define BOOST_PP_REPEAT_2ND98(M,D) BOOST_PP_REPEAT_2ND97(M,D) M(97,D) -#define BOOST_PP_REPEAT_2ND99(M,D) BOOST_PP_REPEAT_2ND98(M,D) M(98,D) -#define BOOST_PP_REPEAT_2ND100(M,D) BOOST_PP_REPEAT_2ND99(M,D) M(99,D) -#define BOOST_PP_REPEAT_2ND101(M,D) BOOST_PP_REPEAT_2ND100(M,D) M(100,D) -#define BOOST_PP_REPEAT_2ND102(M,D) BOOST_PP_REPEAT_2ND101(M,D) M(101,D) -#define BOOST_PP_REPEAT_2ND103(M,D) BOOST_PP_REPEAT_2ND102(M,D) M(102,D) -#define BOOST_PP_REPEAT_2ND104(M,D) BOOST_PP_REPEAT_2ND103(M,D) M(103,D) -#define BOOST_PP_REPEAT_2ND105(M,D) BOOST_PP_REPEAT_2ND104(M,D) M(104,D) -#define BOOST_PP_REPEAT_2ND106(M,D) BOOST_PP_REPEAT_2ND105(M,D) M(105,D) -#define BOOST_PP_REPEAT_2ND107(M,D) BOOST_PP_REPEAT_2ND106(M,D) M(106,D) -#define BOOST_PP_REPEAT_2ND108(M,D) BOOST_PP_REPEAT_2ND107(M,D) M(107,D) -#define BOOST_PP_REPEAT_2ND109(M,D) BOOST_PP_REPEAT_2ND108(M,D) M(108,D) -#define BOOST_PP_REPEAT_2ND110(M,D) BOOST_PP_REPEAT_2ND109(M,D) M(109,D) -#define BOOST_PP_REPEAT_2ND111(M,D) BOOST_PP_REPEAT_2ND110(M,D) M(110,D) -#define BOOST_PP_REPEAT_2ND112(M,D) BOOST_PP_REPEAT_2ND111(M,D) M(111,D) -#define BOOST_PP_REPEAT_2ND113(M,D) BOOST_PP_REPEAT_2ND112(M,D) M(112,D) -#define BOOST_PP_REPEAT_2ND114(M,D) BOOST_PP_REPEAT_2ND113(M,D) M(113,D) -#define BOOST_PP_REPEAT_2ND115(M,D) BOOST_PP_REPEAT_2ND114(M,D) M(114,D) -#define BOOST_PP_REPEAT_2ND116(M,D) BOOST_PP_REPEAT_2ND115(M,D) M(115,D) -#define BOOST_PP_REPEAT_2ND117(M,D) BOOST_PP_REPEAT_2ND116(M,D) M(116,D) -#define BOOST_PP_REPEAT_2ND118(M,D) BOOST_PP_REPEAT_2ND117(M,D) M(117,D) -#define BOOST_PP_REPEAT_2ND119(M,D) BOOST_PP_REPEAT_2ND118(M,D) M(118,D) -#define BOOST_PP_REPEAT_2ND120(M,D) BOOST_PP_REPEAT_2ND119(M,D) M(119,D) -#define BOOST_PP_REPEAT_2ND121(M,D) BOOST_PP_REPEAT_2ND120(M,D) M(120,D) -#define BOOST_PP_REPEAT_2ND122(M,D) BOOST_PP_REPEAT_2ND121(M,D) M(121,D) -#define BOOST_PP_REPEAT_2ND123(M,D) BOOST_PP_REPEAT_2ND122(M,D) M(122,D) -#define BOOST_PP_REPEAT_2ND124(M,D) BOOST_PP_REPEAT_2ND123(M,D) M(123,D) -#define BOOST_PP_REPEAT_2ND125(M,D) BOOST_PP_REPEAT_2ND124(M,D) M(124,D) -#define BOOST_PP_REPEAT_2ND126(M,D) BOOST_PP_REPEAT_2ND125(M,D) M(125,D) -#define BOOST_PP_REPEAT_2ND127(M,D) BOOST_PP_REPEAT_2ND126(M,D) M(126,D) -#define BOOST_PP_REPEAT_2ND128(M,D) BOOST_PP_REPEAT_2ND127(M,D) M(127,D) - -/*
Obsolete. Use BOOST_PP_REPEAT_2ND().
*/ -#define BOOST_PREPROCESSOR_REPEAT_2ND(C,M,D) BOOST_PP_REPEAT_2ND(C,M,D) +#includeSame as BOOST_PP_REPEAT(), but implemented independently.
*/ -#define BOOST_PP_REPEAT_3RD(COUNT,MACRO,DATA) BOOST_PP_REPEAT_3RD_DELAY(COUNT)(MACRO,DATA) +/**This header is obsolete. Use the following code instead.
-#define BOOST_PP_REPEAT_3RD_DELAY(C) BOOST_PP_REPEAT_3RD##C -#define BOOST_PP_REPEAT_3RD0(M,D) -#define BOOST_PP_REPEAT_3RD1(M,D) M(0,D) -#define BOOST_PP_REPEAT_3RD2(M,D) M(0,D) M(1,D) -#define BOOST_PP_REPEAT_3RD3(M,D) M(0,D) M(1,D) M(2,D) -#define BOOST_PP_REPEAT_3RD4(M,D) M(0,D) M(1,D) M(2,D) M(3,D) -#define BOOST_PP_REPEAT_3RD5(M,D) BOOST_PP_REPEAT_3RD4(M,D) M(4,D) -#define BOOST_PP_REPEAT_3RD6(M,D) BOOST_PP_REPEAT_3RD5(M,D) M(5,D) -#define BOOST_PP_REPEAT_3RD7(M,D) BOOST_PP_REPEAT_3RD6(M,D) M(6,D) -#define BOOST_PP_REPEAT_3RD8(M,D) BOOST_PP_REPEAT_3RD7(M,D) M(7,D) -#define BOOST_PP_REPEAT_3RD9(M,D) BOOST_PP_REPEAT_3RD8(M,D) M(8,D) -#define BOOST_PP_REPEAT_3RD10(M,D) BOOST_PP_REPEAT_3RD9(M,D) M(9,D) -#define BOOST_PP_REPEAT_3RD11(M,D) BOOST_PP_REPEAT_3RD10(M,D) M(10,D) -#define BOOST_PP_REPEAT_3RD12(M,D) BOOST_PP_REPEAT_3RD11(M,D) M(11,D) -#define BOOST_PP_REPEAT_3RD13(M,D) BOOST_PP_REPEAT_3RD12(M,D) M(12,D) -#define BOOST_PP_REPEAT_3RD14(M,D) BOOST_PP_REPEAT_3RD13(M,D) M(13,D) -#define BOOST_PP_REPEAT_3RD15(M,D) BOOST_PP_REPEAT_3RD14(M,D) M(14,D) -#define BOOST_PP_REPEAT_3RD16(M,D) BOOST_PP_REPEAT_3RD15(M,D) M(15,D) -#define BOOST_PP_REPEAT_3RD17(M,D) BOOST_PP_REPEAT_3RD16(M,D) M(16,D) -#define BOOST_PP_REPEAT_3RD18(M,D) BOOST_PP_REPEAT_3RD17(M,D) M(17,D) -#define BOOST_PP_REPEAT_3RD19(M,D) BOOST_PP_REPEAT_3RD18(M,D) M(18,D) -#define BOOST_PP_REPEAT_3RD20(M,D) BOOST_PP_REPEAT_3RD19(M,D) M(19,D) -#define BOOST_PP_REPEAT_3RD21(M,D) BOOST_PP_REPEAT_3RD20(M,D) M(20,D) -#define BOOST_PP_REPEAT_3RD22(M,D) BOOST_PP_REPEAT_3RD21(M,D) M(21,D) -#define BOOST_PP_REPEAT_3RD23(M,D) BOOST_PP_REPEAT_3RD22(M,D) M(22,D) -#define BOOST_PP_REPEAT_3RD24(M,D) BOOST_PP_REPEAT_3RD23(M,D) M(23,D) -#define BOOST_PP_REPEAT_3RD25(M,D) BOOST_PP_REPEAT_3RD24(M,D) M(24,D) -#define BOOST_PP_REPEAT_3RD26(M,D) BOOST_PP_REPEAT_3RD25(M,D) M(25,D) -#define BOOST_PP_REPEAT_3RD27(M,D) BOOST_PP_REPEAT_3RD26(M,D) M(26,D) -#define BOOST_PP_REPEAT_3RD28(M,D) BOOST_PP_REPEAT_3RD27(M,D) M(27,D) -#define BOOST_PP_REPEAT_3RD29(M,D) BOOST_PP_REPEAT_3RD28(M,D) M(28,D) -#define BOOST_PP_REPEAT_3RD30(M,D) BOOST_PP_REPEAT_3RD29(M,D) M(29,D) -#define BOOST_PP_REPEAT_3RD31(M,D) BOOST_PP_REPEAT_3RD30(M,D) M(30,D) -#define BOOST_PP_REPEAT_3RD32(M,D) BOOST_PP_REPEAT_3RD31(M,D) M(31,D) -#define BOOST_PP_REPEAT_3RD33(M,D) BOOST_PP_REPEAT_3RD32(M,D) M(32,D) -#define BOOST_PP_REPEAT_3RD34(M,D) BOOST_PP_REPEAT_3RD33(M,D) M(33,D) -#define BOOST_PP_REPEAT_3RD35(M,D) BOOST_PP_REPEAT_3RD34(M,D) M(34,D) -#define BOOST_PP_REPEAT_3RD36(M,D) BOOST_PP_REPEAT_3RD35(M,D) M(35,D) -#define BOOST_PP_REPEAT_3RD37(M,D) BOOST_PP_REPEAT_3RD36(M,D) M(36,D) -#define BOOST_PP_REPEAT_3RD38(M,D) BOOST_PP_REPEAT_3RD37(M,D) M(37,D) -#define BOOST_PP_REPEAT_3RD39(M,D) BOOST_PP_REPEAT_3RD38(M,D) M(38,D) -#define BOOST_PP_REPEAT_3RD40(M,D) BOOST_PP_REPEAT_3RD39(M,D) M(39,D) -#define BOOST_PP_REPEAT_3RD41(M,D) BOOST_PP_REPEAT_3RD40(M,D) M(40,D) -#define BOOST_PP_REPEAT_3RD42(M,D) BOOST_PP_REPEAT_3RD41(M,D) M(41,D) -#define BOOST_PP_REPEAT_3RD43(M,D) BOOST_PP_REPEAT_3RD42(M,D) M(42,D) -#define BOOST_PP_REPEAT_3RD44(M,D) BOOST_PP_REPEAT_3RD43(M,D) M(43,D) -#define BOOST_PP_REPEAT_3RD45(M,D) BOOST_PP_REPEAT_3RD44(M,D) M(44,D) -#define BOOST_PP_REPEAT_3RD46(M,D) BOOST_PP_REPEAT_3RD45(M,D) M(45,D) -#define BOOST_PP_REPEAT_3RD47(M,D) BOOST_PP_REPEAT_3RD46(M,D) M(46,D) -#define BOOST_PP_REPEAT_3RD48(M,D) BOOST_PP_REPEAT_3RD47(M,D) M(47,D) -#define BOOST_PP_REPEAT_3RD49(M,D) BOOST_PP_REPEAT_3RD48(M,D) M(48,D) -#define BOOST_PP_REPEAT_3RD50(M,D) BOOST_PP_REPEAT_3RD49(M,D) M(49,D) -#define BOOST_PP_REPEAT_3RD51(M,D) BOOST_PP_REPEAT_3RD50(M,D) M(50,D) -#define BOOST_PP_REPEAT_3RD52(M,D) BOOST_PP_REPEAT_3RD51(M,D) M(51,D) -#define BOOST_PP_REPEAT_3RD53(M,D) BOOST_PP_REPEAT_3RD52(M,D) M(52,D) -#define BOOST_PP_REPEAT_3RD54(M,D) BOOST_PP_REPEAT_3RD53(M,D) M(53,D) -#define BOOST_PP_REPEAT_3RD55(M,D) BOOST_PP_REPEAT_3RD54(M,D) M(54,D) -#define BOOST_PP_REPEAT_3RD56(M,D) BOOST_PP_REPEAT_3RD55(M,D) M(55,D) -#define BOOST_PP_REPEAT_3RD57(M,D) BOOST_PP_REPEAT_3RD56(M,D) M(56,D) -#define BOOST_PP_REPEAT_3RD58(M,D) BOOST_PP_REPEAT_3RD57(M,D) M(57,D) -#define BOOST_PP_REPEAT_3RD59(M,D) BOOST_PP_REPEAT_3RD58(M,D) M(58,D) -#define BOOST_PP_REPEAT_3RD60(M,D) BOOST_PP_REPEAT_3RD59(M,D) M(59,D) -#define BOOST_PP_REPEAT_3RD61(M,D) BOOST_PP_REPEAT_3RD60(M,D) M(60,D) -#define BOOST_PP_REPEAT_3RD62(M,D) BOOST_PP_REPEAT_3RD61(M,D) M(61,D) -#define BOOST_PP_REPEAT_3RD63(M,D) BOOST_PP_REPEAT_3RD62(M,D) M(62,D) -#define BOOST_PP_REPEAT_3RD64(M,D) BOOST_PP_REPEAT_3RD63(M,D) M(63,D) -#define BOOST_PP_REPEAT_3RD65(M,D) BOOST_PP_REPEAT_3RD64(M,D) M(64,D) -#define BOOST_PP_REPEAT_3RD66(M,D) BOOST_PP_REPEAT_3RD65(M,D) M(65,D) -#define BOOST_PP_REPEAT_3RD67(M,D) BOOST_PP_REPEAT_3RD66(M,D) M(66,D) -#define BOOST_PP_REPEAT_3RD68(M,D) BOOST_PP_REPEAT_3RD67(M,D) M(67,D) -#define BOOST_PP_REPEAT_3RD69(M,D) BOOST_PP_REPEAT_3RD68(M,D) M(68,D) -#define BOOST_PP_REPEAT_3RD70(M,D) BOOST_PP_REPEAT_3RD69(M,D) M(69,D) -#define BOOST_PP_REPEAT_3RD71(M,D) BOOST_PP_REPEAT_3RD70(M,D) M(70,D) -#define BOOST_PP_REPEAT_3RD72(M,D) BOOST_PP_REPEAT_3RD71(M,D) M(71,D) -#define BOOST_PP_REPEAT_3RD73(M,D) BOOST_PP_REPEAT_3RD72(M,D) M(72,D) -#define BOOST_PP_REPEAT_3RD74(M,D) BOOST_PP_REPEAT_3RD73(M,D) M(73,D) -#define BOOST_PP_REPEAT_3RD75(M,D) BOOST_PP_REPEAT_3RD74(M,D) M(74,D) -#define BOOST_PP_REPEAT_3RD76(M,D) BOOST_PP_REPEAT_3RD75(M,D) M(75,D) -#define BOOST_PP_REPEAT_3RD77(M,D) BOOST_PP_REPEAT_3RD76(M,D) M(76,D) -#define BOOST_PP_REPEAT_3RD78(M,D) BOOST_PP_REPEAT_3RD77(M,D) M(77,D) -#define BOOST_PP_REPEAT_3RD79(M,D) BOOST_PP_REPEAT_3RD78(M,D) M(78,D) -#define BOOST_PP_REPEAT_3RD80(M,D) BOOST_PP_REPEAT_3RD79(M,D) M(79,D) -#define BOOST_PP_REPEAT_3RD81(M,D) BOOST_PP_REPEAT_3RD80(M,D) M(80,D) -#define BOOST_PP_REPEAT_3RD82(M,D) BOOST_PP_REPEAT_3RD81(M,D) M(81,D) -#define BOOST_PP_REPEAT_3RD83(M,D) BOOST_PP_REPEAT_3RD82(M,D) M(82,D) -#define BOOST_PP_REPEAT_3RD84(M,D) BOOST_PP_REPEAT_3RD83(M,D) M(83,D) -#define BOOST_PP_REPEAT_3RD85(M,D) BOOST_PP_REPEAT_3RD84(M,D) M(84,D) -#define BOOST_PP_REPEAT_3RD86(M,D) BOOST_PP_REPEAT_3RD85(M,D) M(85,D) -#define BOOST_PP_REPEAT_3RD87(M,D) BOOST_PP_REPEAT_3RD86(M,D) M(86,D) -#define BOOST_PP_REPEAT_3RD88(M,D) BOOST_PP_REPEAT_3RD87(M,D) M(87,D) -#define BOOST_PP_REPEAT_3RD89(M,D) BOOST_PP_REPEAT_3RD88(M,D) M(88,D) -#define BOOST_PP_REPEAT_3RD90(M,D) BOOST_PP_REPEAT_3RD89(M,D) M(89,D) -#define BOOST_PP_REPEAT_3RD91(M,D) BOOST_PP_REPEAT_3RD90(M,D) M(90,D) -#define BOOST_PP_REPEAT_3RD92(M,D) BOOST_PP_REPEAT_3RD91(M,D) M(91,D) -#define BOOST_PP_REPEAT_3RD93(M,D) BOOST_PP_REPEAT_3RD92(M,D) M(92,D) -#define BOOST_PP_REPEAT_3RD94(M,D) BOOST_PP_REPEAT_3RD93(M,D) M(93,D) -#define BOOST_PP_REPEAT_3RD95(M,D) BOOST_PP_REPEAT_3RD94(M,D) M(94,D) -#define BOOST_PP_REPEAT_3RD96(M,D) BOOST_PP_REPEAT_3RD95(M,D) M(95,D) -#define BOOST_PP_REPEAT_3RD97(M,D) BOOST_PP_REPEAT_3RD96(M,D) M(96,D) -#define BOOST_PP_REPEAT_3RD98(M,D) BOOST_PP_REPEAT_3RD97(M,D) M(97,D) -#define BOOST_PP_REPEAT_3RD99(M,D) BOOST_PP_REPEAT_3RD98(M,D) M(98,D) -#define BOOST_PP_REPEAT_3RD100(M,D) BOOST_PP_REPEAT_3RD99(M,D) M(99,D) -#define BOOST_PP_REPEAT_3RD101(M,D) BOOST_PP_REPEAT_3RD100(M,D) M(100,D) -#define BOOST_PP_REPEAT_3RD102(M,D) BOOST_PP_REPEAT_3RD101(M,D) M(101,D) -#define BOOST_PP_REPEAT_3RD103(M,D) BOOST_PP_REPEAT_3RD102(M,D) M(102,D) -#define BOOST_PP_REPEAT_3RD104(M,D) BOOST_PP_REPEAT_3RD103(M,D) M(103,D) -#define BOOST_PP_REPEAT_3RD105(M,D) BOOST_PP_REPEAT_3RD104(M,D) M(104,D) -#define BOOST_PP_REPEAT_3RD106(M,D) BOOST_PP_REPEAT_3RD105(M,D) M(105,D) -#define BOOST_PP_REPEAT_3RD107(M,D) BOOST_PP_REPEAT_3RD106(M,D) M(106,D) -#define BOOST_PP_REPEAT_3RD108(M,D) BOOST_PP_REPEAT_3RD107(M,D) M(107,D) -#define BOOST_PP_REPEAT_3RD109(M,D) BOOST_PP_REPEAT_3RD108(M,D) M(108,D) -#define BOOST_PP_REPEAT_3RD110(M,D) BOOST_PP_REPEAT_3RD109(M,D) M(109,D) -#define BOOST_PP_REPEAT_3RD111(M,D) BOOST_PP_REPEAT_3RD110(M,D) M(110,D) -#define BOOST_PP_REPEAT_3RD112(M,D) BOOST_PP_REPEAT_3RD111(M,D) M(111,D) -#define BOOST_PP_REPEAT_3RD113(M,D) BOOST_PP_REPEAT_3RD112(M,D) M(112,D) -#define BOOST_PP_REPEAT_3RD114(M,D) BOOST_PP_REPEAT_3RD113(M,D) M(113,D) -#define BOOST_PP_REPEAT_3RD115(M,D) BOOST_PP_REPEAT_3RD114(M,D) M(114,D) -#define BOOST_PP_REPEAT_3RD116(M,D) BOOST_PP_REPEAT_3RD115(M,D) M(115,D) -#define BOOST_PP_REPEAT_3RD117(M,D) BOOST_PP_REPEAT_3RD116(M,D) M(116,D) -#define BOOST_PP_REPEAT_3RD118(M,D) BOOST_PP_REPEAT_3RD117(M,D) M(117,D) -#define BOOST_PP_REPEAT_3RD119(M,D) BOOST_PP_REPEAT_3RD118(M,D) M(118,D) -#define BOOST_PP_REPEAT_3RD120(M,D) BOOST_PP_REPEAT_3RD119(M,D) M(119,D) -#define BOOST_PP_REPEAT_3RD121(M,D) BOOST_PP_REPEAT_3RD120(M,D) M(120,D) -#define BOOST_PP_REPEAT_3RD122(M,D) BOOST_PP_REPEAT_3RD121(M,D) M(121,D) -#define BOOST_PP_REPEAT_3RD123(M,D) BOOST_PP_REPEAT_3RD122(M,D) M(122,D) -#define BOOST_PP_REPEAT_3RD124(M,D) BOOST_PP_REPEAT_3RD123(M,D) M(123,D) -#define BOOST_PP_REPEAT_3RD125(M,D) BOOST_PP_REPEAT_3RD124(M,D) M(124,D) -#define BOOST_PP_REPEAT_3RD126(M,D) BOOST_PP_REPEAT_3RD125(M,D) M(125,D) -#define BOOST_PP_REPEAT_3RD127(M,D) BOOST_PP_REPEAT_3RD126(M,D) M(126,D) -#define BOOST_PP_REPEAT_3RD128(M,D) BOOST_PP_REPEAT_3RD127(M,D) M(127,D) ++#include <boost/preprocessor/repeat.hpp> ++*/ -/*
Obsolete. Use BOOST_PP_REPEAT_3RD().
*/ -#define BOOST_PREPROCESSOR_REPEAT_3RD(C,M,D) BOOST_PP_REPEAT_3RD(C,M,D) +#includeRepeats the macro MACRO(INDEX,DATA)
for INDEX = [FIRST,LAST)
.
BOOST_PP_REPEAT_FROM_TO() implements automatic recursion. 2D and 3D repetition +are directly supported.
+ +Obsolete, just use BOOST_PP_REPEAT_FROM_TO().
*/ +#define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO +/**Obsolete, just use BOOST_PP_REPEAT_FROM_TO().
*/ +#define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO #endif diff --git a/include/boost/preprocessor/repeat_from_to_2nd.hpp b/include/boost/preprocessor/repeat_from_to_2nd.hpp index 6d1876a..e554d4c 100644 --- a/include/boost/preprocessor/repeat_from_to_2nd.hpp +++ b/include/boost/preprocessor/repeat_from_to_2nd.hpp @@ -13,11 +13,12 @@ * See http://www.boost.org for most recent version. */ -#includeThis header is obsolete. Use the following code instead.
-/**Same as BOOST_PP_REPEAT_FROM_TO(), but implemented independently.
*/ -#define BOOST_PP_REPEAT_FROM_TO_2ND(FIRST,LAST,MACRO,DATA) BOOST_PP_REPEAT_2ND(BOOST_PP_SUB(LAST,FIRST),BOOST_PP_REPEAT_FROM_TO_2ND_F,(FIRST,MACRO,DATA)) -#define BOOST_PP_REPEAT_FROM_TO_2ND_F(I,SMP) BOOST_PP_TUPLE_ELEM(3,1,SMP)(BOOST_PP_ADD(I,BOOST_PP_TUPLE_ELEM(3,0,SMP)),BOOST_PP_TUPLE_ELEM(3,2,SMP)) ++#include <boost/preprocessor/repeat_from_to.hpp> ++*/ + +#include
This header is obsolete. Use the following code instead.
-/**Same as BOOST_PP_REPEAT_FROM_TO(), but implemented independently.
*/ -#define BOOST_PP_REPEAT_FROM_TO_3RD(FIRST,LAST,MACRO,DATA) BOOST_PP_REPEAT_3RD(BOOST_PP_SUB(LAST,FIRST),BOOST_PP_REPEAT_FROM_TO_3RD_F,(FIRST,MACRO,DATA)) -#define BOOST_PP_REPEAT_FROM_TO_3RD_F(I,SMP) BOOST_PP_TUPLE_ELEM(3,1,SMP)(BOOST_PP_ADD(I,BOOST_PP_TUPLE_ELEM(3,0,SMP)),BOOST_PP_TUPLE_ELEM(3,2,SMP)) ++#include <boost/preprocessor/repeat_from_to.hpp> ++*/ + +#include
BOOST_PP_WHILE() currently does not implement automatic recursion. The reason +for this is that it would lead to very poor performance. The automatic recursion +technique takes O(N) steps just to find out that the Nth recursion should be used. +This would dramatically effect the time complexity of macros using automatic +recursion.
+