gmock-pp.h (googletest-release-1.10.0) | : | gmock-pp.h (googletest-release-1.11.0) | ||
---|---|---|---|---|
#ifndef THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_PP_H_ | #ifndef GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_ | |||
#define THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_PP_H_ | #define GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_ | |||
#undef GMOCK_PP_INTERNAL_USE_MSVC | ||||
#if defined(__clang__) | ||||
#define GMOCK_PP_INTERNAL_USE_MSVC 0 | ||||
#elif defined(_MSC_VER) | ||||
// TODO(iserna): Also verify tradional versus comformant preprocessor. | ||||
static_assert( | ||||
_MSC_VER >= 1900, | ||||
"MSVC version not supported. There is support for MSVC 14.0 and above."); | ||||
#define GMOCK_PP_INTERNAL_USE_MSVC 1 | ||||
#else | ||||
#define GMOCK_PP_INTERNAL_USE_MSVC 0 | ||||
#endif | ||||
// Expands and concatenates the arguments. Constructed macros reevaluate. | // Expands and concatenates the arguments. Constructed macros reevaluate. | |||
#define GMOCK_PP_CAT(_1, _2) GMOCK_PP_INTERNAL_CAT(_1, _2) | #define GMOCK_PP_CAT(_1, _2) GMOCK_PP_INTERNAL_CAT(_1, _2) | |||
// Expands and stringifies the only argument. | // Expands and stringifies the only argument. | |||
#define GMOCK_PP_STRINGIZE(...) GMOCK_PP_INTERNAL_STRINGIZE(__VA_ARGS__) | #define GMOCK_PP_STRINGIZE(...) GMOCK_PP_INTERNAL_STRINGIZE(__VA_ARGS__) | |||
// Returns empty. Given a variadic number of arguments. | // Returns empty. Given a variadic number of arguments. | |||
#define GMOCK_PP_EMPTY(...) | #define GMOCK_PP_EMPTY(...) | |||
// Returns a comma. Given a variadic number of arguments. | // Returns a comma. Given a variadic number of arguments. | |||
#define GMOCK_PP_COMMA(...) , | #define GMOCK_PP_COMMA(...) , | |||
// Returns the only argument. | // Returns the only argument. | |||
#define GMOCK_PP_IDENTITY(_1) _1 | #define GMOCK_PP_IDENTITY(_1) _1 | |||
// MSVC preprocessor collapses __VA_ARGS__ in a single argument, we use a | ||||
// CAT-like directive to force correct evaluation. Each macro has its own. | ||||
#if GMOCK_PP_INTERNAL_USE_MSVC | ||||
// Evaluates to the number of arguments after expansion. | // Evaluates to the number of arguments after expansion. | |||
// | // | |||
// #define PAIR x, y | // #define PAIR x, y | |||
// | // | |||
// GMOCK_PP_NARG() => 1 | // GMOCK_PP_NARG() => 1 | |||
// GMOCK_PP_NARG(x) => 1 | // GMOCK_PP_NARG(x) => 1 | |||
// GMOCK_PP_NARG(x, y) => 2 | // GMOCK_PP_NARG(x, y) => 2 | |||
// GMOCK_PP_NARG(PAIR) => 2 | // GMOCK_PP_NARG(PAIR) => 2 | |||
// | // | |||
// Requires: the number of arguments after expansion is at most 15. | // Requires: the number of arguments after expansion is at most 15. | |||
#define GMOCK_PP_NARG(...) \ | #define GMOCK_PP_NARG(...) \ | |||
GMOCK_PP_INTERNAL_NARG_CAT( \ | GMOCK_PP_INTERNAL_16TH( \ | |||
GMOCK_PP_INTERNAL_INTERNAL_16TH(__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, \ | (__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)) | |||
8, 7, 6, 5, 4, 3, 2, 1), ) | ||||
// Returns 1 if the expansion of arguments has an unprotected comma. Otherwise | // Returns 1 if the expansion of arguments has an unprotected comma. Otherwise | |||
// returns 0. Requires no more than 15 unprotected commas. | // returns 0. Requires no more than 15 unprotected commas. | |||
#define GMOCK_PP_HAS_COMMA(...) \ | #define GMOCK_PP_HAS_COMMA(...) \ | |||
GMOCK_PP_INTERNAL_HAS_COMMA_CAT( \ | GMOCK_PP_INTERNAL_16TH( \ | |||
GMOCK_PP_INTERNAL_INTERNAL_16TH(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | (__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0)) | |||
1, 1, 1, 1, 1, 0), ) | ||||
// Returns the first argument. | // Returns the first argument. | |||
#define GMOCK_PP_HEAD(...) \ | #define GMOCK_PP_HEAD(...) GMOCK_PP_INTERNAL_HEAD((__VA_ARGS__, unusedArg)) | |||
GMOCK_PP_INTERNAL_HEAD_CAT(GMOCK_PP_INTERNAL_HEAD(__VA_ARGS__), ) | ||||
// Returns the tail. A variadic list of all arguments minus the first. Requires | // Returns the tail. A variadic list of all arguments minus the first. Requires | |||
// at least one argument. | // at least one argument. | |||
#define GMOCK_PP_TAIL(...) \ | #define GMOCK_PP_TAIL(...) GMOCK_PP_INTERNAL_TAIL((__VA_ARGS__)) | |||
GMOCK_PP_INTERNAL_TAIL_CAT(GMOCK_PP_INTERNAL_TAIL(__VA_ARGS__), ) | ||||
// Calls CAT(_Macro, NARG(__VA_ARGS__))(__VA_ARGS__) | // Calls CAT(_Macro, NARG(__VA_ARGS__))(__VA_ARGS__) | |||
#define GMOCK_PP_VARIADIC_CALL(_Macro, ...) \ | #define GMOCK_PP_VARIADIC_CALL(_Macro, ...) \ | |||
GMOCK_PP_INTERNAL_VARIADIC_CALL_CAT( \ | GMOCK_PP_IDENTITY( \ | |||
GMOCK_PP_CAT(_Macro, GMOCK_PP_NARG(__VA_ARGS__))(__VA_ARGS__), ) | GMOCK_PP_CAT(_Macro, GMOCK_PP_NARG(__VA_ARGS__))(__VA_ARGS__)) | |||
#else // GMOCK_PP_INTERNAL_USE_MSVC | ||||
#define GMOCK_PP_NARG(...) \ | ||||
GMOCK_PP_INTERNAL_INTERNAL_16TH(__VA_ARGS__, 15, 14, 13, 12, 11, 10, 9, 8, \ | ||||
7, 6, 5, 4, 3, 2, 1) | ||||
#define GMOCK_PP_HAS_COMMA(...) \ | ||||
GMOCK_PP_INTERNAL_INTERNAL_16TH(__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | ||||
1, 1, 1, 1, 0) | ||||
#define GMOCK_PP_HEAD(...) GMOCK_PP_INTERNAL_HEAD(__VA_ARGS__) | ||||
#define GMOCK_PP_TAIL(...) GMOCK_PP_INTERNAL_TAIL(__VA_ARGS__) | ||||
#define GMOCK_PP_VARIADIC_CALL(_Macro, ...) \ | ||||
GMOCK_PP_CAT(_Macro, GMOCK_PP_NARG(__VA_ARGS__))(__VA_ARGS__) | ||||
#endif // GMOCK_PP_INTERNAL_USE_MSVC | ||||
// If the arguments after expansion have no tokens, evaluates to `1`. Otherwise | // If the arguments after expansion have no tokens, evaluates to `1`. Otherwise | |||
// evaluates to `0`. | // evaluates to `0`. | |||
// | // | |||
// Requires: * the number of arguments after expansion is at most 15. | // Requires: * the number of arguments after expansion is at most 15. | |||
// * If the argument is a macro, it must be able to be called with one | // * If the argument is a macro, it must be able to be called with one | |||
// argument. | // argument. | |||
// | // | |||
// Implementation details: | // Implementation details: | |||
// | // | |||
skipping to change at line 124 | skipping to change at line 89 | |||
#define GMOCK_PP_IS_EMPTY(...) \ | #define GMOCK_PP_IS_EMPTY(...) \ | |||
GMOCK_PP_INTERNAL_IS_EMPTY(GMOCK_PP_HAS_COMMA(__VA_ARGS__), \ | GMOCK_PP_INTERNAL_IS_EMPTY(GMOCK_PP_HAS_COMMA(__VA_ARGS__), \ | |||
GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__), \ | GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__), \ | |||
GMOCK_PP_HAS_COMMA(__VA_ARGS__()), \ | GMOCK_PP_HAS_COMMA(__VA_ARGS__()), \ | |||
GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__())) | GMOCK_PP_HAS_COMMA(GMOCK_PP_COMMA __VA_ARGS__())) | |||
// Evaluates to _Then if _Cond is 1 and _Else if _Cond is 0. | // Evaluates to _Then if _Cond is 1 and _Else if _Cond is 0. | |||
#define GMOCK_PP_IF(_Cond, _Then, _Else) \ | #define GMOCK_PP_IF(_Cond, _Then, _Else) \ | |||
GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IF_, _Cond)(_Then, _Else) | GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IF_, _Cond)(_Then, _Else) | |||
// Similar to GMOCK_PP_IF but takes _Then and _Else in parentheses. | ||||
// | ||||
// GMOCK_PP_GENERIC_IF(1, (a, b, c), (d, e, f)) => a, b, c | ||||
// GMOCK_PP_GENERIC_IF(0, (a, b, c), (d, e, f)) => d, e, f | ||||
// | ||||
#define GMOCK_PP_GENERIC_IF(_Cond, _Then, _Else) \ | ||||
GMOCK_PP_REMOVE_PARENS(GMOCK_PP_IF(_Cond, _Then, _Else)) | ||||
// Evaluates to the number of arguments after expansion. Identifies 'empty' as | // Evaluates to the number of arguments after expansion. Identifies 'empty' as | |||
// 0. | // 0. | |||
// | // | |||
// #define PAIR x, y | // #define PAIR x, y | |||
// | // | |||
// GMOCK_PP_NARG0() => 0 | // GMOCK_PP_NARG0() => 0 | |||
// GMOCK_PP_NARG0(x) => 1 | // GMOCK_PP_NARG0(x) => 1 | |||
// GMOCK_PP_NARG0(x, y) => 2 | // GMOCK_PP_NARG0(x, y) => 2 | |||
// GMOCK_PP_NARG0(PAIR) => 2 | // GMOCK_PP_NARG0(PAIR) => 2 | |||
// | // | |||
// Requires: * the number of arguments after expansion is at most 15. | // Requires: * the number of arguments after expansion is at most 15. | |||
// * If the argument is a macro, it must be able to be called with one | // * If the argument is a macro, it must be able to be called with one | |||
// argument. | // argument. | |||
#define GMOCK_PP_NARG0(...) \ | #define GMOCK_PP_NARG0(...) \ | |||
GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(__VA_ARGS__), 0, GMOCK_PP_NARG(__VA_ARGS__)) | GMOCK_PP_IF(GMOCK_PP_IS_EMPTY(__VA_ARGS__), 0, GMOCK_PP_NARG(__VA_ARGS__)) | |||
// Expands to 1 if the first argument starts with something in parentheses, | // Expands to 1 if the first argument starts with something in parentheses, | |||
// otherwise to 0. | // otherwise to 0. | |||
#define GMOCK_PP_IS_BEGIN_PARENS(...) \ | #define GMOCK_PP_IS_BEGIN_PARENS(...) \ | |||
GMOCK_PP_INTERNAL_ALTERNATE_HEAD( \ | GMOCK_PP_HEAD(GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_, \ | |||
GMOCK_PP_CAT(GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_, \ | GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C __VA_ARGS__)) | |||
GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C __VA_ARGS__)) | ||||
// Expands to 1 is there is only one argument and it is enclosed in parentheses. | // Expands to 1 is there is only one argument and it is enclosed in parentheses. | |||
#define GMOCK_PP_IS_ENCLOSED_PARENS(...) \ | #define GMOCK_PP_IS_ENCLOSED_PARENS(...) \ | |||
GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(__VA_ARGS__), \ | GMOCK_PP_IF(GMOCK_PP_IS_BEGIN_PARENS(__VA_ARGS__), \ | |||
GMOCK_PP_IS_EMPTY(GMOCK_PP_EMPTY __VA_ARGS__), 0) | GMOCK_PP_IS_EMPTY(GMOCK_PP_EMPTY __VA_ARGS__), 0) | |||
// Remove the parens, requires GMOCK_PP_IS_ENCLOSED_PARENS(args) => 1. | // Remove the parens, requires GMOCK_PP_IS_ENCLOSED_PARENS(args) => 1. | |||
#define GMOCK_PP_REMOVE_PARENS(...) GMOCK_PP_INTERNAL_REMOVE_PARENS __VA_ARGS__ | #define GMOCK_PP_REMOVE_PARENS(...) GMOCK_PP_INTERNAL_REMOVE_PARENS __VA_ARGS__ | |||
// Expands to _Macro(0, _Data, e1) _Macro(1, _Data, e2) ... _Macro(K -1, _Data, | // Expands to _Macro(0, _Data, e1) _Macro(1, _Data, e2) ... _Macro(K -1, _Data, | |||
skipping to change at line 182 | skipping to change at line 154 | |||
#define GMOCK_PP_INC(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_INC_, _i) | #define GMOCK_PP_INC(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_INC_, _i) | |||
// Returns comma if _i != 0. Requires _i to be between 0 and 15. | // Returns comma if _i != 0. Requires _i to be between 0 and 15. | |||
#define GMOCK_PP_COMMA_IF(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_COMMA_IF_, _i) | #define GMOCK_PP_COMMA_IF(_i) GMOCK_PP_CAT(GMOCK_PP_INTERNAL_COMMA_IF_, _i) | |||
// Internal details follow. Do not use any of these symbols outside of this | // Internal details follow. Do not use any of these symbols outside of this | |||
// file or we will break your code. | // file or we will break your code. | |||
#define GMOCK_PP_INTENRAL_EMPTY_TUPLE (, , , , , , , , , , , , , , , ) | #define GMOCK_PP_INTENRAL_EMPTY_TUPLE (, , , , , , , , , , , , , , , ) | |||
#define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2 | #define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2 | |||
#define GMOCK_PP_INTERNAL_STRINGIZE(...) #__VA_ARGS__ | #define GMOCK_PP_INTERNAL_STRINGIZE(...) #__VA_ARGS__ | |||
#define GMOCK_PP_INTERNAL_INTERNAL_16TH(_1, _2, _3, _4, _5, _6, _7, _8, _9, \ | ||||
_10, _11, _12, _13, _14, _15, _16, \ | ||||
...) \ | ||||
_16 | ||||
#define GMOCK_PP_INTERNAL_CAT_5(_1, _2, _3, _4, _5) _1##_2##_3##_4##_5 | #define GMOCK_PP_INTERNAL_CAT_5(_1, _2, _3, _4, _5) _1##_2##_3##_4##_5 | |||
#define GMOCK_PP_INTERNAL_IS_EMPTY(_1, _2, _3, _4) \ | #define GMOCK_PP_INTERNAL_IS_EMPTY(_1, _2, _3, _4) \ | |||
GMOCK_PP_HAS_COMMA(GMOCK_PP_INTERNAL_CAT_5(GMOCK_PP_INTERNAL_IS_EMPTY_CASE_, \ | GMOCK_PP_HAS_COMMA(GMOCK_PP_INTERNAL_CAT_5(GMOCK_PP_INTERNAL_IS_EMPTY_CASE_, \ | |||
_1, _2, _3, _4)) | _1, _2, _3, _4)) | |||
#define GMOCK_PP_INTERNAL_IS_EMPTY_CASE_0001 , | #define GMOCK_PP_INTERNAL_IS_EMPTY_CASE_0001 , | |||
#define GMOCK_PP_INTERNAL_IF_1(_Then, _Else) _Then | #define GMOCK_PP_INTERNAL_IF_1(_Then, _Else) _Then | |||
#define GMOCK_PP_INTERNAL_IF_0(_Then, _Else) _Else | #define GMOCK_PP_INTERNAL_IF_0(_Then, _Else) _Else | |||
#define GMOCK_PP_INTERNAL_HEAD(_1, ...) _1 | ||||
#define GMOCK_PP_INTERNAL_TAIL(_1, ...) __VA_ARGS__ | ||||
#if GMOCK_PP_INTERNAL_USE_MSVC | // Because of MSVC treating a token with a comma in it as a single token when | |||
#define GMOCK_PP_INTERNAL_NARG_CAT(_1, _2) GMOCK_PP_INTERNAL_NARG_CAT_I(_1, _2) | // passed to another macro, we need to force it to evaluate it as multiple | |||
#define GMOCK_PP_INTERNAL_HEAD_CAT(_1, _2) GMOCK_PP_INTERNAL_HEAD_CAT_I(_1, _2) | // tokens. We do that by using a "IDENTITY(MACRO PARENTHESIZED_ARGS)" macro. We | |||
#define GMOCK_PP_INTERNAL_HAS_COMMA_CAT(_1, _2) \ | // define one per possible macro that relies on this behavior. Note "_Args" must | |||
GMOCK_PP_INTERNAL_HAS_COMMA_CAT_I(_1, _2) | // be parenthesized. | |||
#define GMOCK_PP_INTERNAL_TAIL_CAT(_1, _2) GMOCK_PP_INTERNAL_TAIL_CAT_I(_1, _2) | #define GMOCK_PP_INTERNAL_INTERNAL_16TH(_1, _2, _3, _4, _5, _6, _7, _8, _9, \ | |||
#define GMOCK_PP_INTERNAL_VARIADIC_CALL_CAT(_1, _2) \ | _10, _11, _12, _13, _14, _15, _16, \ | |||
GMOCK_PP_INTERNAL_VARIADIC_CALL_CAT_I(_1, _2) | ...) \ | |||
#define GMOCK_PP_INTERNAL_NARG_CAT_I(_1, _2) _1##_2 | _16 | |||
#define GMOCK_PP_INTERNAL_HEAD_CAT_I(_1, _2) _1##_2 | #define GMOCK_PP_INTERNAL_16TH(_Args) \ | |||
#define GMOCK_PP_INTERNAL_HAS_COMMA_CAT_I(_1, _2) _1##_2 | GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_16TH _Args) | |||
#define GMOCK_PP_INTERNAL_TAIL_CAT_I(_1, _2) _1##_2 | #define GMOCK_PP_INTERNAL_INTERNAL_HEAD(_1, ...) _1 | |||
#define GMOCK_PP_INTERNAL_VARIADIC_CALL_CAT_I(_1, _2) _1##_2 | #define GMOCK_PP_INTERNAL_HEAD(_Args) \ | |||
#define GMOCK_PP_INTERNAL_ALTERNATE_HEAD(...) \ | GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_HEAD _Args) | |||
GMOCK_PP_INTERNAL_ALTERNATE_HEAD_CAT(GMOCK_PP_HEAD(__VA_ARGS__), ) | #define GMOCK_PP_INTERNAL_INTERNAL_TAIL(_1, ...) __VA_ARGS__ | |||
#define GMOCK_PP_INTERNAL_ALTERNATE_HEAD_CAT(_1, _2) \ | #define GMOCK_PP_INTERNAL_TAIL(_Args) \ | |||
GMOCK_PP_INTERNAL_ALTERNATE_HEAD_CAT_I(_1, _2) | GMOCK_PP_IDENTITY(GMOCK_PP_INTERNAL_INTERNAL_TAIL _Args) | |||
#define GMOCK_PP_INTERNAL_ALTERNATE_HEAD_CAT_I(_1, _2) _1##_2 | ||||
#else // GMOCK_PP_INTERNAL_USE_MSVC | ||||
#define GMOCK_PP_INTERNAL_ALTERNATE_HEAD(...) GMOCK_PP_HEAD(__VA_ARGS__) | ||||
#endif // GMOCK_PP_INTERNAL_USE_MSVC | ||||
#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C(...) 1 _ | #define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C(...) 1 _ | |||
#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_1 1, | #define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_1 1, | |||
#define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C \ | #define GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_R_GMOCK_PP_INTERNAL_IBP_IS_VARIADIC_C \ | |||
0, | 0, | |||
#define GMOCK_PP_INTERNAL_REMOVE_PARENS(...) __VA_ARGS__ | #define GMOCK_PP_INTERNAL_REMOVE_PARENS(...) __VA_ARGS__ | |||
#define GMOCK_PP_INTERNAL_INC_0 1 | #define GMOCK_PP_INTERNAL_INC_0 1 | |||
#define GMOCK_PP_INTERNAL_INC_1 2 | #define GMOCK_PP_INTERNAL_INC_1 2 | |||
#define GMOCK_PP_INTERNAL_INC_2 3 | #define GMOCK_PP_INTERNAL_INC_2 3 | |||
#define GMOCK_PP_INTERNAL_INC_3 4 | #define GMOCK_PP_INTERNAL_INC_3 4 | |||
skipping to change at line 317 | skipping to change at line 279 | |||
(GMOCK_PP_TAIL _Tuple)) | (GMOCK_PP_TAIL _Tuple)) | |||
#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(_i, _Macro, _Data, _Tuple) \ | #define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(_i, _Macro, _Data, _Tuple) \ | |||
GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \ | GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \ | |||
GMOCK_PP_INTERNAL_FOR_EACH_IMPL_13(GMOCK_PP_INC(_i), _Macro, _Data, \ | GMOCK_PP_INTERNAL_FOR_EACH_IMPL_13(GMOCK_PP_INC(_i), _Macro, _Data, \ | |||
(GMOCK_PP_TAIL _Tuple)) | (GMOCK_PP_TAIL _Tuple)) | |||
#define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_15(_i, _Macro, _Data, _Tuple) \ | #define GMOCK_PP_INTERNAL_FOR_EACH_IMPL_15(_i, _Macro, _Data, _Tuple) \ | |||
GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \ | GMOCK_PP_INTERNAL_CALL_MACRO(_Macro, _i, _Data, GMOCK_PP_HEAD _Tuple) \ | |||
GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(GMOCK_PP_INC(_i), _Macro, _Data, \ | GMOCK_PP_INTERNAL_FOR_EACH_IMPL_14(GMOCK_PP_INC(_i), _Macro, _Data, \ | |||
(GMOCK_PP_TAIL _Tuple)) | (GMOCK_PP_TAIL _Tuple)) | |||
#endif // THIRD_PARTY_GOOGLETEST_GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_ | #endif // GOOGLEMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PP_H_ | |||
End of changes. 13 change blocks. | ||||
79 lines changed or deleted | 41 lines changed or added |