drm/xe: Rename few xe_args.h macros
To minimize the risk of future name collisions, rename macros to always include the ARG or ARGS tag: DROP_FIRST to DROP_FIRST_ARG PICK_FIRST to FIRST_ARG PICK_LAST to LAST_ARG Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> #v2 Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240508171000.1864-1-michal.wajdeczko@intel.com
This commit is contained in:
parent
62010b3cd6
commit
c3203ca3b8
@ -21,10 +21,10 @@ static void call_args_example(struct kunit *test)
|
||||
#undef buz
|
||||
}
|
||||
|
||||
static void drop_first_example(struct kunit *test)
|
||||
static void drop_first_arg_example(struct kunit *test)
|
||||
{
|
||||
#define foo X, Y, Z, Q
|
||||
#define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo))
|
||||
#define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo))
|
||||
|
||||
KUNIT_EXPECT_EQ(test, bar, 3);
|
||||
|
||||
@ -32,12 +32,12 @@ static void drop_first_example(struct kunit *test)
|
||||
#undef bar
|
||||
}
|
||||
|
||||
static void pick_first_example(struct kunit *test)
|
||||
static void first_arg_example(struct kunit *test)
|
||||
{
|
||||
int X = 1;
|
||||
|
||||
#define foo X, Y, Z, Q
|
||||
#define bar PICK_FIRST(foo)
|
||||
#define bar FIRST_ARG(foo)
|
||||
|
||||
KUNIT_EXPECT_EQ(test, bar, X);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(bar), "X");
|
||||
@ -46,12 +46,12 @@ static void pick_first_example(struct kunit *test)
|
||||
#undef bar
|
||||
}
|
||||
|
||||
static void pick_last_example(struct kunit *test)
|
||||
static void last_arg_example(struct kunit *test)
|
||||
{
|
||||
int Q = 1;
|
||||
|
||||
#define foo X, Y, Z, Q
|
||||
#define bar PICK_LAST(foo)
|
||||
#define bar LAST_ARG(foo)
|
||||
|
||||
KUNIT_EXPECT_EQ(test, bar, Q);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(bar), "Q");
|
||||
@ -60,11 +60,29 @@ static void pick_last_example(struct kunit *test)
|
||||
#undef bar
|
||||
}
|
||||
|
||||
static void pick_arg_example(struct kunit *test)
|
||||
{
|
||||
int Y = 1, Z = 2;
|
||||
|
||||
#define foo X, Y, Z, Q
|
||||
#define bar PICK_ARG(2, foo)
|
||||
#define buz PICK_ARG3(foo)
|
||||
|
||||
KUNIT_EXPECT_EQ(test, bar, Y);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(bar), "Y");
|
||||
KUNIT_EXPECT_EQ(test, buz, Z);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(buz), "Z");
|
||||
|
||||
#undef foo
|
||||
#undef bar
|
||||
#undef buz
|
||||
}
|
||||
|
||||
static void sep_comma_example(struct kunit *test)
|
||||
{
|
||||
#define foo(f) f(X) f(Y) f(Z) f(Q)
|
||||
#define bar DROP_FIRST(foo(ARGS_SEP_COMMA __stringify))
|
||||
#define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo(ARGS_SEP_COMMA)))
|
||||
#define bar DROP_FIRST_ARG(foo(ARGS_SEP_COMMA __stringify))
|
||||
#define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo(ARGS_SEP_COMMA)))
|
||||
|
||||
static const char * const a[] = { bar };
|
||||
|
||||
@ -123,61 +141,74 @@ static void call_args_test(struct kunit *test)
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, MAX_ARGS), 12);
|
||||
}
|
||||
|
||||
static void drop_first_test(struct kunit *test)
|
||||
static void drop_first_arg_test(struct kunit *test)
|
||||
{
|
||||
int Y = -2, Z = -3, Q = -4;
|
||||
int a[] = { DROP_FIRST(FOO_ARGS) };
|
||||
int a[] = { DROP_FIRST_ARG(FOO_ARGS) };
|
||||
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST(0, -1), -1);
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST(DROP_FIRST(0, -1, -2)), -2);
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(0, -1), -1);
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(DROP_FIRST_ARG(0, -1, -2)), -2);
|
||||
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, DROP_FIRST(FOO_ARGS)), 3);
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST(DROP_FIRST(DROP_FIRST(FOO_ARGS))), -4);
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(FOO_ARGS)), 3);
|
||||
KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS))), -4);
|
||||
KUNIT_EXPECT_EQ(test, a[0], -2);
|
||||
KUNIT_EXPECT_EQ(test, a[1], -3);
|
||||
KUNIT_EXPECT_EQ(test, a[2], -4);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(DROP_FIRST(DROP_FIRST(DROP_FIRST(FOO_ARGS)))), "Q");
|
||||
|
||||
#define foo DROP_FIRST_ARG(FOO_ARGS)
|
||||
#define bar DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS))
|
||||
#define buz DROP_FIRST_ARG(DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS)))
|
||||
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, foo), 3);
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, bar), 2);
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, buz), 1);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(buz), "Q");
|
||||
|
||||
#undef foo
|
||||
#undef bar
|
||||
#undef buz
|
||||
}
|
||||
|
||||
static void pick_first_test(struct kunit *test)
|
||||
static void first_arg_test(struct kunit *test)
|
||||
{
|
||||
int X = -1;
|
||||
int a[] = { PICK_FIRST(FOO_ARGS) };
|
||||
int a[] = { FIRST_ARG(FOO_ARGS) };
|
||||
|
||||
KUNIT_EXPECT_EQ(test, PICK_FIRST(-1, -2), -1);
|
||||
KUNIT_EXPECT_EQ(test, FIRST_ARG(-1, -2), -1);
|
||||
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, PICK_FIRST(FOO_ARGS)), 1);
|
||||
KUNIT_EXPECT_EQ(test, PICK_FIRST(FOO_ARGS), -1);
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, FIRST_ARG(FOO_ARGS)), 1);
|
||||
KUNIT_EXPECT_EQ(test, FIRST_ARG(FOO_ARGS), -1);
|
||||
KUNIT_EXPECT_EQ(test, a[0], -1);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(PICK_FIRST(FOO_ARGS)), "X");
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(FIRST_ARG(FOO_ARGS)), "X");
|
||||
}
|
||||
|
||||
static void pick_last_test(struct kunit *test)
|
||||
static void last_arg_test(struct kunit *test)
|
||||
{
|
||||
int Q = -4;
|
||||
int a[] = { PICK_LAST(FOO_ARGS) };
|
||||
int a[] = { LAST_ARG(FOO_ARGS) };
|
||||
|
||||
KUNIT_EXPECT_EQ(test, PICK_LAST(-1, -2), -2);
|
||||
KUNIT_EXPECT_EQ(test, LAST_ARG(-1, -2), -2);
|
||||
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, PICK_LAST(FOO_ARGS)), 1);
|
||||
KUNIT_EXPECT_EQ(test, PICK_LAST(FOO_ARGS), -4);
|
||||
KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, LAST_ARG(FOO_ARGS)), 1);
|
||||
KUNIT_EXPECT_EQ(test, LAST_ARG(FOO_ARGS), -4);
|
||||
KUNIT_EXPECT_EQ(test, a[0], -4);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(PICK_LAST(FOO_ARGS)), "Q");
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(LAST_ARG(FOO_ARGS)), "Q");
|
||||
|
||||
KUNIT_EXPECT_EQ(test, PICK_LAST(MAX_ARGS), -12);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(PICK_LAST(MAX_ARGS)), "-12");
|
||||
KUNIT_EXPECT_EQ(test, LAST_ARG(MAX_ARGS), -12);
|
||||
KUNIT_EXPECT_STREQ(test, __stringify(LAST_ARG(MAX_ARGS)), "-12");
|
||||
}
|
||||
|
||||
static struct kunit_case args_tests[] = {
|
||||
KUNIT_CASE(count_args_test),
|
||||
KUNIT_CASE(call_args_example),
|
||||
KUNIT_CASE(call_args_test),
|
||||
KUNIT_CASE(drop_first_example),
|
||||
KUNIT_CASE(drop_first_test),
|
||||
KUNIT_CASE(pick_first_example),
|
||||
KUNIT_CASE(pick_first_test),
|
||||
KUNIT_CASE(pick_last_example),
|
||||
KUNIT_CASE(pick_last_test),
|
||||
KUNIT_CASE(drop_first_arg_example),
|
||||
KUNIT_CASE(drop_first_arg_test),
|
||||
KUNIT_CASE(first_arg_example),
|
||||
KUNIT_CASE(first_arg_test),
|
||||
KUNIT_CASE(last_arg_example),
|
||||
KUNIT_CASE(last_arg_test),
|
||||
KUNIT_CASE(pick_arg_example),
|
||||
KUNIT_CASE(sep_comma_example),
|
||||
{}
|
||||
};
|
||||
|
@ -35,7 +35,7 @@
|
||||
#define __CALL_ARGS(f, args...) f(args)
|
||||
|
||||
/**
|
||||
* DROP_FIRST - Returns all arguments except the first one.
|
||||
* DROP_FIRST_ARG - Returns all arguments except the first one.
|
||||
* @args: arguments
|
||||
*
|
||||
* This helper macro allows manipulation the argument list before passing it
|
||||
@ -44,15 +44,15 @@
|
||||
* Example:
|
||||
*
|
||||
* #define foo X,Y,Z,Q
|
||||
* #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo))
|
||||
* #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo))
|
||||
*
|
||||
* With above definitions bar expands to 3.
|
||||
*/
|
||||
#define DROP_FIRST(args...) __DROP_FIRST(args)
|
||||
#define __DROP_FIRST(a, b...) b
|
||||
#define DROP_FIRST_ARG(args...) __DROP_FIRST_ARG(args)
|
||||
#define __DROP_FIRST_ARG(a, b...) b
|
||||
|
||||
/**
|
||||
* PICK_FIRST - Returns the first argument.
|
||||
* FIRST_ARG - Returns the first argument.
|
||||
* @args: arguments
|
||||
*
|
||||
* This helper macro allows manipulation the argument list before passing it
|
||||
@ -61,15 +61,15 @@
|
||||
* Example:
|
||||
*
|
||||
* #define foo X,Y,Z,Q
|
||||
* #define bar PICK_FIRST(foo)
|
||||
* #define bar FIRST_ARG(foo)
|
||||
*
|
||||
* With above definitions bar expands to X.
|
||||
*/
|
||||
#define PICK_FIRST(args...) __PICK_FIRST(args)
|
||||
#define __PICK_FIRST(a, b...) a
|
||||
#define FIRST_ARG(args...) __FIRST_ARG(args)
|
||||
#define __FIRST_ARG(a, b...) a
|
||||
|
||||
/**
|
||||
* PICK_LAST - Returns the last argument.
|
||||
* LAST_ARG - Returns the last argument.
|
||||
* @args: arguments
|
||||
*
|
||||
* This helper macro allows manipulation the argument list before passing it
|
||||
@ -80,24 +80,46 @@
|
||||
* Example:
|
||||
*
|
||||
* #define foo X,Y,Z,Q
|
||||
* #define bar PICK_LAST(foo)
|
||||
* #define bar LAST_ARG(foo)
|
||||
*
|
||||
* With above definitions bar expands to Q.
|
||||
*/
|
||||
#define PICK_LAST(args...) __PICK_ARG(COUNT_ARGS(args), args)
|
||||
#define LAST_ARG(args...) __LAST_ARG(args)
|
||||
#define __LAST_ARG(args...) PICK_ARG(COUNT_ARGS(args), args)
|
||||
|
||||
/**
|
||||
* PICK_ARG - Returns the n-th argument.
|
||||
* @n: argument number to be returned
|
||||
* @args: arguments
|
||||
*
|
||||
* This helper macro allows manipulation the argument list before passing it
|
||||
* to the next level macro.
|
||||
*
|
||||
* Like COUNT_ARGS() this macro supports n up to 12.
|
||||
* Specialized macros PICK_ARG1() to PICK_ARG12() are also available.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
* #define foo X,Y,Z,Q
|
||||
* #define bar PICK_ARG(2, foo)
|
||||
* #define buz PICK_ARG3(foo)
|
||||
*
|
||||
* With above definitions bar expands to Y and buz expands to Z.
|
||||
*/
|
||||
#define PICK_ARG(n, args...) __PICK_ARG(n, args)
|
||||
#define __PICK_ARG(n, args...) CALL_ARGS(CONCATENATE(PICK_ARG, n), args)
|
||||
#define PICK_ARG1(args...) PICK_FIRST(args)
|
||||
#define PICK_ARG2(args...) PICK_ARG1(DROP_FIRST(args))
|
||||
#define PICK_ARG3(args...) PICK_ARG2(DROP_FIRST(args))
|
||||
#define PICK_ARG4(args...) PICK_ARG3(DROP_FIRST(args))
|
||||
#define PICK_ARG5(args...) PICK_ARG4(DROP_FIRST(args))
|
||||
#define PICK_ARG6(args...) PICK_ARG5(DROP_FIRST(args))
|
||||
#define PICK_ARG7(args...) PICK_ARG6(DROP_FIRST(args))
|
||||
#define PICK_ARG8(args...) PICK_ARG7(DROP_FIRST(args))
|
||||
#define PICK_ARG9(args...) PICK_ARG8(DROP_FIRST(args))
|
||||
#define PICK_ARG10(args...) PICK_ARG9(DROP_FIRST(args))
|
||||
#define PICK_ARG11(args...) PICK_ARG10(DROP_FIRST(args))
|
||||
#define PICK_ARG12(args...) PICK_ARG11(DROP_FIRST(args))
|
||||
#define PICK_ARG1(args...) FIRST_ARG(args)
|
||||
#define PICK_ARG2(args...) PICK_ARG1(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG3(args...) PICK_ARG2(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG4(args...) PICK_ARG3(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG5(args...) PICK_ARG4(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG6(args...) PICK_ARG5(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG7(args...) PICK_ARG6(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG8(args...) PICK_ARG7(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG9(args...) PICK_ARG8(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG10(args...) PICK_ARG9(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG11(args...) PICK_ARG10(DROP_FIRST_ARG(args))
|
||||
#define PICK_ARG12(args...) PICK_ARG11(DROP_FIRST_ARG(args))
|
||||
|
||||
/**
|
||||
* ARGS_SEP_COMMA - Definition of a comma character.
|
||||
@ -109,8 +131,8 @@
|
||||
* Example:
|
||||
*
|
||||
* #define foo(f) f(X) f(Y) f(Z) f(Q)
|
||||
* #define bar DROP_FIRST(foo(ARGS_SEP_COMMA __stringify))
|
||||
* #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo(ARGS_SEP_COMMA)))
|
||||
* #define bar DROP_FIRST_ARG(foo(ARGS_SEP_COMMA __stringify))
|
||||
* #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo(ARGS_SEP_COMMA)))
|
||||
*
|
||||
* With above definitions bar expands to
|
||||
* "X", "Y", "Z", "Q"
|
||||
|
@ -17,7 +17,7 @@
|
||||
*/
|
||||
#define _XE_ESC(...) __VA_ARGS__
|
||||
|
||||
#define _XE_TUPLE_TAIL(...) (DROP_FIRST(__VA_ARGS__))
|
||||
#define _XE_TUPLE_TAIL(...) (DROP_FIRST_ARG(__VA_ARGS__))
|
||||
|
||||
#define _XE_RTP_CONCAT(a, b) CONCATENATE(XE_RTP_, CONCATENATE(a, b))
|
||||
|
||||
@ -54,10 +54,10 @@
|
||||
* XE_RTP_TEST_FOO BANANA XE_RTP_TEST_BAR
|
||||
*/
|
||||
#define XE_RTP_PASTE_FOREACH(prefix_, sep_, args_) _XE_RTP_CONCAT(PASTE_, COUNT_ARGS args_)(prefix_, sep_, args_)
|
||||
#define XE_RTP_PASTE_1(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_)
|
||||
#define XE_RTP_PASTE_2(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_1(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
#define XE_RTP_PASTE_3(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_2(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
#define XE_RTP_PASTE_4(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_3(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
#define XE_RTP_PASTE_1(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_)
|
||||
#define XE_RTP_PASTE_2(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_1(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
#define XE_RTP_PASTE_3(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_2(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
#define XE_RTP_PASTE_4(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_3(prefix_, sep_, _XE_TUPLE_TAIL args_)
|
||||
|
||||
/*
|
||||
* XE_RTP_DROP_CAST - Drop cast to convert a compound statement to a initializer
|
||||
@ -70,6 +70,6 @@
|
||||
*
|
||||
* { .a = 10 }
|
||||
*/
|
||||
#define XE_RTP_DROP_CAST(...) _XE_ESC(DROP_FIRST _XE_ESC __VA_ARGS__)
|
||||
#define XE_RTP_DROP_CAST(...) _XE_ESC(DROP_FIRST_ARG _XE_ESC __VA_ARGS__)
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user