Commit e237e691 authored by Xavier Deguillard's avatar Xavier Deguillard Committed by Facebook GitHub Bot

preprocessor: increase max arguments of FOLLY_PP_FOR_EACH

Summary: EdenFS has a use-case for this macro but with 10+ arguments. Raise the maximum number of arguments from 7 to 15 to permit this.

Reviewed By: yfeldblum

Differential Revision: D26268587

fbshipit-source-id: be0b0579d854a93dc2983706a253370fe05905df
parent 737e6144
...@@ -110,9 +110,46 @@ ...@@ -110,9 +110,46 @@
*/ */
#define FOLLY_PP_STRINGIZE(x) #x #define FOLLY_PP_STRINGIZE(x) #x
#define FOLLY_PP_DETAIL_NARGS_1(dummy, _7, _6, _5, _4, _3, _2, _1, _0, ...) _0 #define FOLLY_PP_DETAIL_NARGS_1( \
dummy, \
_15, \
_14, \
_13, \
_12, \
_11, \
_10, \
_9, \
_8, \
_7, \
_6, \
_5, \
_4, \
_3, \
_2, \
_1, \
_0, \
...) \
_0
#define FOLLY_PP_DETAIL_NARGS(...) \ #define FOLLY_PP_DETAIL_NARGS(...) \
FOLLY_PP_DETAIL_NARGS_1(dummy, ##__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0) FOLLY_PP_DETAIL_NARGS_1( \
dummy, \
##__VA_ARGS__, \
15, \
14, \
13, \
12, \
11, \
10, \
9, \
8, \
7, \
6, \
5, \
4, \
3, \
2, \
1, \
0)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_0(fn, ...) #define FOLLY_PP_DETAIL_FOR_EACH_REC_0(fn, ...)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_1(fn, a, ...) \ #define FOLLY_PP_DETAIL_FOR_EACH_REC_1(fn, a, ...) \
...@@ -129,6 +166,22 @@ ...@@ -129,6 +166,22 @@
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_5(fn, __VA_ARGS__) fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_5(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_7(fn, a, ...) \ #define FOLLY_PP_DETAIL_FOR_EACH_REC_7(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_6(fn, __VA_ARGS__) fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_6(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_8(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_7(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_9(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_8(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_10(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_9(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_11(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_10(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_12(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_11(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_13(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_12(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_14(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_13(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_REC_15(fn, a, ...) \
fn(a) FOLLY_PP_DETAIL_FOR_EACH_REC_14(fn, __VA_ARGS__)
#define FOLLY_PP_DETAIL_FOR_EACH_2(fn, n, ...) \ #define FOLLY_PP_DETAIL_FOR_EACH_2(fn, n, ...) \
FOLLY_PP_DETAIL_FOR_EACH_REC_##n(fn, __VA_ARGS__) FOLLY_PP_DETAIL_FOR_EACH_REC_##n(fn, __VA_ARGS__)
...@@ -141,7 +194,7 @@ ...@@ -141,7 +194,7 @@
* Used to invoke a preprocessor macro, the name of which is passed as the * Used to invoke a preprocessor macro, the name of which is passed as the
* first argument, once for each subsequent variadic argument. * first argument, once for each subsequent variadic argument.
* *
* At present, supports [0, 8) arguments. * At present, supports [0, 16) arguments.
* *
* This input: * This input:
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment