diff options
author | dancingqueue <dancingqueue@yandex-team.ru> | 2022-02-10 16:50:06 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:50:06 +0300 |
commit | 97ccada5638c88fa727d68a9ee849a9a768a54d9 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /util | |
parent | 3c712c7c680d2b93fae03957df9561bd08eb5b7c (diff) | |
download | ydb-97ccada5638c88fa727d68a9ee849a9a768a54d9.tar.gz |
Restoring authorship annotation for <dancingqueue@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util')
-rw-r--r-- | util/generic/va_args.h | 36 | ||||
-rwxr-xr-x | util/generic/va_args_gen.py | 74 | ||||
-rw-r--r-- | util/generic/va_args_ut.cpp | 48 |
3 files changed, 79 insertions, 79 deletions
diff --git a/util/generic/va_args.h b/util/generic/va_args.h index 4c7ec54c97..33498d47ed 100644 --- a/util/generic/va_args.h +++ b/util/generic/va_args.h @@ -237,13 +237,13 @@ Y_PASS_VA_ARGS(__Y_MAP_ARGS_49(ACTION, __VA_ARGS__)) /** - * Expands a macro for each of the variable arguments with it's sequence number and value. - * Corresponding sequence numbers will expand in descending order. - * Doesn't work with empty arguments list. - */ -#define Y_MAP_ARGS_N(ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(__Y_MAP_ARGS_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, __VA_ARGS__)) -#define __Y_MAP_ARGS_N_0(...) -#define __Y_MAP_ARGS_N_1(ACTION, x, ...) ACTION(1, x) + * Expands a macro for each of the variable arguments with it's sequence number and value. + * Corresponding sequence numbers will expand in descending order. + * Doesn't work with empty arguments list. + */ +#define Y_MAP_ARGS_N(ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(__Y_MAP_ARGS_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, __VA_ARGS__)) +#define __Y_MAP_ARGS_N_0(...) +#define __Y_MAP_ARGS_N_1(ACTION, x, ...) ACTION(1, x) #define __Y_MAP_ARGS_N_2(ACTION, x, ...) \ ACTION(2, x) \ Y_PASS_VA_ARGS(__Y_MAP_ARGS_N_1(ACTION, __VA_ARGS__)) @@ -391,8 +391,8 @@ #define __Y_MAP_ARGS_N_50(ACTION, x, ...) \ ACTION(50, x) \ Y_PASS_VA_ARGS(__Y_MAP_ARGS_N_49(ACTION, __VA_ARGS__)) - -/** + +/** * Expands a macro for each of the variable arguments. * Doesn't work with empty arguments list. */ @@ -548,13 +548,13 @@ Y_PASS_VA_ARGS(__Y_MAP_ARGS_WITH_LAST_49(ACTION, LAST_ACTION, __VA_ARGS__)) /** - * Expands a macro for each of the variable arguments with it's sequence number and value. - * Corresponding sequence numbers will expand in descending order. - * Doesn't work with empty arguments list. - */ -#define Y_MAP_ARGS_WITH_LAST_N(ACTION, LAST_ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(__Y_MAP_ARGS_WITH_LAST_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, LAST_ACTION, __VA_ARGS__)) -#define __Y_MAP_ARGS_WITH_LAST_N_0(...) -#define __Y_MAP_ARGS_WITH_LAST_N_1(ACTION, LAST_ACTION, x, ...) LAST_ACTION(1, x) + * Expands a macro for each of the variable arguments with it's sequence number and value. + * Corresponding sequence numbers will expand in descending order. + * Doesn't work with empty arguments list. + */ +#define Y_MAP_ARGS_WITH_LAST_N(ACTION, LAST_ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(__Y_MAP_ARGS_WITH_LAST_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, LAST_ACTION, __VA_ARGS__)) +#define __Y_MAP_ARGS_WITH_LAST_N_0(...) +#define __Y_MAP_ARGS_WITH_LAST_N_1(ACTION, LAST_ACTION, x, ...) LAST_ACTION(1, x) #define __Y_MAP_ARGS_WITH_LAST_N_2(ACTION, LAST_ACTION, x, ...) \ ACTION(2, x) \ Y_PASS_VA_ARGS(__Y_MAP_ARGS_WITH_LAST_N_1(ACTION, LAST_ACTION, __VA_ARGS__)) @@ -702,8 +702,8 @@ #define __Y_MAP_ARGS_WITH_LAST_N_50(ACTION, LAST_ACTION, x, ...) \ ACTION(50, x) \ Y_PASS_VA_ARGS(__Y_MAP_ARGS_WITH_LAST_N_49(ACTION, LAST_ACTION, __VA_ARGS__)) - -/** + +/** * Get all elements but the last one from `__VA_ARGS__`. * Doesn't work with empty arguments list. */ diff --git a/util/generic/va_args_gen.py b/util/generic/va_args_gen.py index bacdc10859..232b53fca6 100755 --- a/util/generic/va_args_gen.py +++ b/util/generic/va_args_gen.py @@ -33,9 +33,9 @@ def generate(limit): count(limit) get_elem(limit) map_args(limit) - map_args_n(limit) + map_args_n(limit) map_args_with_last(limit) - map_args_with_last_n(limit) + map_args_with_last_n(limit) all_but_last(limit) last(limit) impl_dispatcher() @@ -96,23 +96,23 @@ def map_args(limit): 'ACTION, __VA_ARGS__))'.format(i, i - 1)) -def map_args_n(limit): - print(textwrap.dedent(''' - /** - * Expands a macro for each of the variable arguments with it's sequence number and value. - * Corresponding sequence numbers will expand in descending order. - * Doesn't work with empty arguments list. - */ - '''.rstrip())) - print('#define Y_MAP_ARGS_N(ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(' - '__Y_MAP_ARGS_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, __VA_ARGS__))') - print('#define __Y_MAP_ARGS_N_0(...)') - print('#define __Y_MAP_ARGS_N_1(ACTION, x, ...) ACTION(1, x)') - for i in xrange(2, limit + 1): - print('#define __Y_MAP_ARGS_N_{}(ACTION, x, ...) ACTION({}, x) Y_PASS_VA_ARGS(__Y_MAP_ARGS_N_{}(' - 'ACTION, __VA_ARGS__))'.format(i, i, i - 1)) - - +def map_args_n(limit): + print(textwrap.dedent(''' + /** + * Expands a macro for each of the variable arguments with it's sequence number and value. + * Corresponding sequence numbers will expand in descending order. + * Doesn't work with empty arguments list. + */ + '''.rstrip())) + print('#define Y_MAP_ARGS_N(ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(Y_CAT(' + '__Y_MAP_ARGS_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, __VA_ARGS__))') + print('#define __Y_MAP_ARGS_N_0(...)') + print('#define __Y_MAP_ARGS_N_1(ACTION, x, ...) ACTION(1, x)') + for i in xrange(2, limit + 1): + print('#define __Y_MAP_ARGS_N_{}(ACTION, x, ...) ACTION({}, x) Y_PASS_VA_ARGS(__Y_MAP_ARGS_N_{}(' + 'ACTION, __VA_ARGS__))'.format(i, i, i - 1)) + + def map_args_with_last(limit): print(textwrap.dedent(''' /** @@ -130,24 +130,24 @@ def map_args_with_last(limit): '__Y_MAP_ARGS_WITH_LAST_{}(ACTION, LAST_ACTION, __VA_ARGS__))'.format(i, i - 1)) -def map_args_with_last_n(limit): - print(textwrap.dedent(''' - /** - * Expands a macro for each of the variable arguments with it's sequence number and value. - * Corresponding sequence numbers will expand in descending order. - * Doesn't work with empty arguments list. - */ - '''.rstrip())) - print('#define Y_MAP_ARGS_WITH_LAST_N(ACTION, LAST_ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(' - 'Y_CAT(__Y_MAP_ARGS_WITH_LAST_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, LAST_ACTION, ' - '__VA_ARGS__))') - print('#define __Y_MAP_ARGS_WITH_LAST_N_0(...)') - print('#define __Y_MAP_ARGS_WITH_LAST_N_1(ACTION, LAST_ACTION, x, ...) LAST_ACTION(1, x)') - for i in xrange(2, limit + 1): - print('#define __Y_MAP_ARGS_WITH_LAST_N_{}(ACTION, LAST_ACTION, x, ...) ACTION({}, x) Y_PASS_VA_ARGS(' - '__Y_MAP_ARGS_WITH_LAST_N_{}(ACTION, LAST_ACTION, __VA_ARGS__))'.format(i, i, i - 1)) - - +def map_args_with_last_n(limit): + print(textwrap.dedent(''' + /** + * Expands a macro for each of the variable arguments with it's sequence number and value. + * Corresponding sequence numbers will expand in descending order. + * Doesn't work with empty arguments list. + */ + '''.rstrip())) + print('#define Y_MAP_ARGS_WITH_LAST_N(ACTION, LAST_ACTION, ...) Y_PASS_VA_ARGS(Y_PASS_VA_ARGS(' + 'Y_CAT(__Y_MAP_ARGS_WITH_LAST_N_, Y_COUNT_ARGS(__VA_ARGS__)))(ACTION, LAST_ACTION, ' + '__VA_ARGS__))') + print('#define __Y_MAP_ARGS_WITH_LAST_N_0(...)') + print('#define __Y_MAP_ARGS_WITH_LAST_N_1(ACTION, LAST_ACTION, x, ...) LAST_ACTION(1, x)') + for i in xrange(2, limit + 1): + print('#define __Y_MAP_ARGS_WITH_LAST_N_{}(ACTION, LAST_ACTION, x, ...) ACTION({}, x) Y_PASS_VA_ARGS(' + '__Y_MAP_ARGS_WITH_LAST_N_{}(ACTION, LAST_ACTION, __VA_ARGS__))'.format(i, i, i - 1)) + + def all_but_last(limit): print(textwrap.dedent(''' /** diff --git a/util/generic/va_args_ut.cpp b/util/generic/va_args_ut.cpp index f3264bf1f3..a9c96a0f55 100644 --- a/util/generic/va_args_ut.cpp +++ b/util/generic/va_args_ut.cpp @@ -16,30 +16,30 @@ Y_UNIT_TEST_SUITE(TMacroVarargMapTest) { #undef ADD #undef ID } - - Y_UNIT_TEST(TestMapArgsN) { -#define MAP_ARG(INDEX, X) Y_STRINGIZE(X) -#define MAP_INDEX(INDEX, X) Y_STRINGIZE(INDEX) - static const char COMBINED_ARGS[] = Y_MAP_ARGS_N(MAP_ARG, 1, 2, 3); - UNIT_ASSERT_STRINGS_EQUAL(COMBINED_ARGS, "123"); - static const char COMBINED_INDEXES[] = Y_MAP_ARGS_N(MAP_INDEX, 1, 2, 3); - UNIT_ASSERT_STRINGS_EQUAL(COMBINED_INDEXES, "321"); -#undef MAP_INDEX -#undef MAP_ARG - } - - Y_UNIT_TEST(TestMapArgsWithLastN) { -#define ADD_ARG(INDEX, X) X + -#define ID_ARG(INDEX, X) X -#define MAP_INDEX(INDEX, X) Y_STRINGIZE(INDEX) - static const int SUM = Y_MAP_ARGS_WITH_LAST_N(ADD_ARG, ID_ARG, 1, 2, 3, 4 + 5); - UNIT_ASSERT_VALUES_EQUAL(SUM, 1 + 2 + 3 + 4 + 5); - static const char COMBINED_INDEXES[] = Y_MAP_ARGS_WITH_LAST_N(MAP_INDEX, MAP_INDEX, 1, 2, 3, 4 + 5); - UNIT_ASSERT_STRINGS_EQUAL(COMBINED_INDEXES, "4321"); -#undef MAP_INDEX -#undef ADD_ARG -#undef ID_ARG - } + + Y_UNIT_TEST(TestMapArgsN) { +#define MAP_ARG(INDEX, X) Y_STRINGIZE(X) +#define MAP_INDEX(INDEX, X) Y_STRINGIZE(INDEX) + static const char COMBINED_ARGS[] = Y_MAP_ARGS_N(MAP_ARG, 1, 2, 3); + UNIT_ASSERT_STRINGS_EQUAL(COMBINED_ARGS, "123"); + static const char COMBINED_INDEXES[] = Y_MAP_ARGS_N(MAP_INDEX, 1, 2, 3); + UNIT_ASSERT_STRINGS_EQUAL(COMBINED_INDEXES, "321"); +#undef MAP_INDEX +#undef MAP_ARG + } + + Y_UNIT_TEST(TestMapArgsWithLastN) { +#define ADD_ARG(INDEX, X) X + +#define ID_ARG(INDEX, X) X +#define MAP_INDEX(INDEX, X) Y_STRINGIZE(INDEX) + static const int SUM = Y_MAP_ARGS_WITH_LAST_N(ADD_ARG, ID_ARG, 1, 2, 3, 4 + 5); + UNIT_ASSERT_VALUES_EQUAL(SUM, 1 + 2 + 3 + 4 + 5); + static const char COMBINED_INDEXES[] = Y_MAP_ARGS_WITH_LAST_N(MAP_INDEX, MAP_INDEX, 1, 2, 3, 4 + 5); + UNIT_ASSERT_STRINGS_EQUAL(COMBINED_INDEXES, "4321"); +#undef MAP_INDEX +#undef ADD_ARG +#undef ID_ARG + } } Y_UNIT_TEST_SUITE(TestVaArgs) { |