mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-03 11:10:29 +01:00
util: auto-declare the element variable in ARRAY_FOR_EACH
All cases we have in our code base have an otherwise unused variable to loop through the array. Let's auto-declare this as part of the loop. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
1f1ddbc6df
commit
395d12d634
18 changed files with 61 additions and 50 deletions
|
|
@ -2885,7 +2885,6 @@ tp_init_slots(struct tp_dispatch *tp,
|
|||
{ BTN_TOOL_TRIPLETAP, 3 },
|
||||
{ BTN_TOOL_DOUBLETAP, 2 },
|
||||
};
|
||||
struct map *m;
|
||||
unsigned int i, n_btn_tool_touches = 1;
|
||||
|
||||
absinfo = libevdev_get_abs_info(device->evdev, ABS_MT_SLOT);
|
||||
|
|
|
|||
|
|
@ -642,7 +642,6 @@ pad_init_keys(struct pad_dispatch *pad, struct evdev_device *device)
|
|||
KEY_ONSCREEN_KEYBOARD,
|
||||
KEY_CONTROLPANEL,
|
||||
};
|
||||
unsigned int *code;
|
||||
|
||||
/* Wacom's keys are the only ones we know anything about */
|
||||
if (libevdev_get_id_vendor(device->evdev) != VENDOR_ID_WACOM)
|
||||
|
|
|
|||
|
|
@ -2026,7 +2026,6 @@ tablet_proximity_out_quirk_timer_func(uint64_t now, void *data)
|
|||
.code = SYN_REPORT,
|
||||
.value = 0 },
|
||||
};
|
||||
struct input_event *e;
|
||||
|
||||
if (tablet_has_status(tablet, TABLET_TOOL_IN_CONTACT) ||
|
||||
tablet_has_status(tablet, TABLET_BUTTONS_DOWN)) {
|
||||
|
|
|
|||
|
|
@ -1338,7 +1338,6 @@ match_fill_udev_type(struct match *m,
|
|||
{ "ID_INPUT_KEYBOARD", UDEV_KEYBOARD },
|
||||
{ "ID_INPUT_KEY", UDEV_KEYBOARD },
|
||||
};
|
||||
struct ut_map *map;
|
||||
|
||||
ARRAY_FOR_EACH(mappings, map) {
|
||||
if (udev_prop(device, map->prop))
|
||||
|
|
|
|||
|
|
@ -28,8 +28,14 @@
|
|||
#include "config.h"
|
||||
|
||||
#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
|
||||
/**
|
||||
* Iterate through the array _arr, assigning the variable elem to each
|
||||
* element. elem only exists within the loop.
|
||||
*/
|
||||
#define ARRAY_FOR_EACH(_arr, _elem) \
|
||||
for (size_t _i = 0; _i < ARRAY_LENGTH(_arr) && (_elem = &_arr[_i]); _i++)
|
||||
for (__typeof__((_arr)[0]) *_elem = _arr; \
|
||||
_elem < (_arr) + ARRAY_LENGTH(_arr); \
|
||||
_elem++)
|
||||
|
||||
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
||||
#define max(a, b) (((a) > (b)) ? (a) : (b))
|
||||
|
|
|
|||
|
|
@ -321,7 +321,6 @@ parse_evcode_string(const char *s, int *type_out, int *code_out)
|
|||
{ "REL_", EV_REL },
|
||||
{ "SW_", EV_SW },
|
||||
};
|
||||
struct map *m;
|
||||
bool found = false;
|
||||
|
||||
ARRAY_FOR_EACH(map, m) {
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ to_human_time(uint64_t us)
|
|||
{"h", 60, 48},
|
||||
{"d", 24, ~0},
|
||||
};
|
||||
struct c *c;
|
||||
uint64_t value = us;
|
||||
|
||||
ARRAY_FOR_EACH(conversion, c) {
|
||||
|
|
|
|||
|
|
@ -2734,7 +2734,6 @@ litest_button_click(struct litest_device *d,
|
|||
unsigned int button,
|
||||
bool is_press)
|
||||
{
|
||||
struct input_event *ev;
|
||||
struct input_event click[] = {
|
||||
{ .type = EV_KEY, .code = button, .value = is_press ? 1 : 0 },
|
||||
{ .type = EV_SYN, .code = SYN_REPORT, .value = 0 },
|
||||
|
|
@ -2803,7 +2802,6 @@ litest_button_scroll_locked(struct litest_device *dev,
|
|||
void
|
||||
litest_keyboard_key(struct litest_device *d, unsigned int key, bool is_press)
|
||||
{
|
||||
struct input_event *ev;
|
||||
struct input_event click[] = {
|
||||
{ .type = EV_KEY, .code = key, .value = is_press ? 1 : 0 },
|
||||
{ .type = EV_SYN, .code = SYN_REPORT, .value = 0 },
|
||||
|
|
|
|||
|
|
@ -1448,7 +1448,7 @@ debug_log_handler(struct libinput *libinput,
|
|||
const char *format,
|
||||
va_list args)
|
||||
{
|
||||
char *message, **dmsg;
|
||||
char *message;
|
||||
int n;
|
||||
|
||||
if (priority != LIBINPUT_LOG_PRIORITY_DEBUG)
|
||||
|
|
@ -1542,7 +1542,6 @@ START_TEST(device_capability_at_least_one)
|
|||
LIBINPUT_DEVICE_CAP_GESTURE,
|
||||
LIBINPUT_DEVICE_CAP_SWITCH,
|
||||
};
|
||||
enum libinput_device_capability *cap;
|
||||
int ncaps = 0;
|
||||
|
||||
ARRAY_FOR_EACH(caps, cap) {
|
||||
|
|
|
|||
|
|
@ -111,7 +111,6 @@ START_TEST(keyboard_ignore_no_pressed_release)
|
|||
EV_KEY, KEY_A,
|
||||
-1, -1,
|
||||
};
|
||||
enum libinput_key_state *state;
|
||||
enum libinput_key_state expected_states[] = {
|
||||
LIBINPUT_KEY_STATE_PRESSED,
|
||||
LIBINPUT_KEY_STATE_RELEASED,
|
||||
|
|
|
|||
|
|
@ -561,7 +561,6 @@ START_TEST(quirks_parse_vendor_invalid)
|
|||
"MatchVendor=123\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -622,7 +621,6 @@ START_TEST(quirks_parse_product_invalid)
|
|||
"MatchProduct=123\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -683,7 +681,6 @@ START_TEST(quirks_parse_version_invalid)
|
|||
"MatchVersion=123\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -747,7 +744,6 @@ START_TEST(quirks_parse_name_invalid)
|
|||
"MatchName=\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -821,7 +817,6 @@ START_TEST(quirks_parse_udev_invalid)
|
|||
"MatchUdevType=123\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -878,7 +873,6 @@ START_TEST(quirks_parse_dmi_invalid)
|
|||
"MatchDMIModalias=foo\n"
|
||||
"ModelAppleTouchpad=1\n",
|
||||
};
|
||||
const char **qf;
|
||||
|
||||
ARRAY_FOR_EACH(quirks_file, qf) {
|
||||
struct data_dir dd = make_data_dir(*qf);
|
||||
|
|
@ -965,7 +959,6 @@ START_TEST(quirks_parse_dimension_attr)
|
|||
QUIRK_ATTR_SIZE_HINT,
|
||||
QUIRK_ATTR_RESOLUTION_HINT,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_dim test_values[] = {
|
||||
{ "10x10", true, 10, 10 },
|
||||
{ "20x30", true, 20, 30 },
|
||||
|
|
@ -975,7 +968,6 @@ START_TEST(quirks_parse_dimension_attr)
|
|||
{ "0x00", false, 0, 0 },
|
||||
{ "0xa0", false, 0, 0 },
|
||||
};
|
||||
struct qtest_dim *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
@ -1011,7 +1003,6 @@ START_TEST(quirks_parse_range_attr)
|
|||
QUIRK_ATTR_TOUCH_SIZE_RANGE,
|
||||
QUIRK_ATTR_PRESSURE_RANGE,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_range test_values[] = {
|
||||
{ "20:10", true, 20, 10 },
|
||||
{ "30:5", true, 30, 5 },
|
||||
|
|
@ -1029,7 +1020,6 @@ START_TEST(quirks_parse_range_attr)
|
|||
{ "0xa0", false, 0, 0 },
|
||||
{ "0x10:0x5", false, 0, 0 },
|
||||
};
|
||||
struct qtest_range *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
@ -1066,7 +1056,6 @@ START_TEST(quirks_parse_uint_attr)
|
|||
QUIRK_ATTR_PALM_PRESSURE_THRESHOLD,
|
||||
QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_uint test_values[] = {
|
||||
{ "10", true, 10 },
|
||||
{ "0", true, 0 },
|
||||
|
|
@ -1078,7 +1067,6 @@ START_TEST(quirks_parse_uint_attr)
|
|||
{ "0xab", false, 0 },
|
||||
{ "ab", false, 0 },
|
||||
};
|
||||
struct qtest_uint *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
@ -1112,7 +1100,6 @@ START_TEST(quirks_parse_double_attr)
|
|||
enum quirk attrs[] = {
|
||||
QUIRK_ATTR_TRACKPOINT_MULTIPLIER,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_double test_values[] = {
|
||||
{ "10", true, 10.0 },
|
||||
{ "10.0", true, 10.0 },
|
||||
|
|
@ -1132,7 +1119,6 @@ START_TEST(quirks_parse_double_attr)
|
|||
{ "10:5", false, 0 },
|
||||
{ "10x5", false, 0 },
|
||||
};
|
||||
struct qtest_double *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
@ -1167,7 +1153,6 @@ START_TEST(quirks_parse_string_attr)
|
|||
QUIRK_ATTR_LID_SWITCH_RELIABILITY,
|
||||
QUIRK_ATTR_KEYBOARD_INTEGRATION,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_str test_values[] = {
|
||||
{ "below", QUIRK_ATTR_TPKBCOMBO_LAYOUT },
|
||||
{ "reliable", QUIRK_ATTR_LID_SWITCH_RELIABILITY },
|
||||
|
|
@ -1185,7 +1170,6 @@ START_TEST(quirks_parse_string_attr)
|
|||
{ "0xa", 0 },
|
||||
{ "0.0", 0 },
|
||||
};
|
||||
struct qtest_str *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
@ -1219,7 +1203,6 @@ START_TEST(quirks_parse_bool_attr)
|
|||
QUIRK_ATTR_USE_VELOCITY_AVERAGING,
|
||||
QUIRK_ATTR_TABLET_SMOOTHING,
|
||||
};
|
||||
enum quirk *a;
|
||||
struct qtest_bool test_values[] = {
|
||||
{ "0", true, false },
|
||||
{ "1", true, true },
|
||||
|
|
@ -1227,7 +1210,6 @@ START_TEST(quirks_parse_bool_attr)
|
|||
{ "-1", false, false },
|
||||
{ "a", false, false },
|
||||
};
|
||||
struct qtest_bool *t;
|
||||
|
||||
ARRAY_FOR_EACH(attrs, a) {
|
||||
ARRAY_FOR_EACH(test_values, t) {
|
||||
|
|
|
|||
|
|
@ -3346,7 +3346,6 @@ START_TEST(touchpad_trackpoint_buttons)
|
|||
{ BTN_1, BTN_RIGHT },
|
||||
{ BTN_2, BTN_MIDDLE },
|
||||
};
|
||||
const struct buttons *b;
|
||||
|
||||
trackpoint = litest_add_device(li,
|
||||
LITEST_TRACKPOINT);
|
||||
|
|
@ -4197,7 +4196,6 @@ START_TEST(touchpad_dwt_modifier_no_dwt)
|
|||
KEY_RIGHTMETA,
|
||||
KEY_LEFTMETA,
|
||||
};
|
||||
unsigned int *key;
|
||||
|
||||
if (!has_disable_while_typing(touchpad))
|
||||
return;
|
||||
|
|
@ -4243,7 +4241,6 @@ START_TEST(touchpad_dwt_modifier_combo_no_dwt)
|
|||
KEY_RIGHTMETA,
|
||||
KEY_LEFTMETA,
|
||||
};
|
||||
unsigned int *key;
|
||||
|
||||
if (!has_disable_while_typing(touchpad))
|
||||
return;
|
||||
|
|
@ -4293,7 +4290,6 @@ START_TEST(touchpad_dwt_modifier_combo_dwt_after)
|
|||
KEY_RIGHTMETA,
|
||||
KEY_LEFTMETA,
|
||||
};
|
||||
unsigned int *key;
|
||||
|
||||
if (!has_disable_while_typing(touchpad))
|
||||
return;
|
||||
|
|
@ -4347,7 +4343,6 @@ START_TEST(touchpad_dwt_modifier_combo_dwt_remains)
|
|||
KEY_RIGHTMETA,
|
||||
KEY_LEFTMETA,
|
||||
};
|
||||
unsigned int *key;
|
||||
|
||||
if (!has_disable_while_typing(touchpad))
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,57 @@
|
|||
|
||||
#include "check-double-macros.h"
|
||||
|
||||
START_TEST(array_for_each)
|
||||
{
|
||||
int ai[6];
|
||||
char ac[10];
|
||||
struct as {
|
||||
int a;
|
||||
char b;
|
||||
int *ptr;
|
||||
} as[32];
|
||||
|
||||
for (size_t i = 0; i < 6; i++)
|
||||
ai[i] = 20 + i;
|
||||
for (size_t i = 0; i < 10; i++)
|
||||
ac[i] = 100 + i;
|
||||
for (size_t i = 0; i < 32; i++) {
|
||||
as[i].a = 10 + i;
|
||||
as[i].b = 20 + i;
|
||||
as[i].ptr = (int*)0xab + i;
|
||||
}
|
||||
|
||||
int iexpected = 20;
|
||||
ARRAY_FOR_EACH(ai, entry) {
|
||||
ck_assert_int_eq(*entry, iexpected);
|
||||
++iexpected;
|
||||
}
|
||||
ck_assert_int_eq(iexpected, 26);
|
||||
|
||||
int cexpected = 100;
|
||||
ARRAY_FOR_EACH(ac, entry) {
|
||||
ck_assert_int_eq(*entry, cexpected);
|
||||
++cexpected;
|
||||
}
|
||||
ck_assert_int_eq(cexpected, 110);
|
||||
|
||||
struct as sexpected = {
|
||||
.a = 10,
|
||||
.b = 20,
|
||||
.ptr = (int*)0xab,
|
||||
};
|
||||
ARRAY_FOR_EACH(as, entry) {
|
||||
ck_assert_int_eq(entry->a, sexpected.a);
|
||||
ck_assert_int_eq(entry->b, sexpected.b);
|
||||
ck_assert_ptr_eq(entry->ptr, sexpected.ptr);
|
||||
++sexpected.a;
|
||||
++sexpected.b;
|
||||
++sexpected.ptr;
|
||||
}
|
||||
ck_assert_int_eq(sexpected.a, 42);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(bitfield_helpers)
|
||||
{
|
||||
/* This value has a bit set on all of the word boundaries we want to
|
||||
|
|
@ -678,7 +729,6 @@ START_TEST(evdev_abs_parser)
|
|||
{ .which = 0, .prop = ":asb::::" },
|
||||
{ .which = 0, .prop = "foo" },
|
||||
};
|
||||
struct test *t;
|
||||
|
||||
ARRAY_FOR_EACH(tests, t) {
|
||||
struct input_absinfo abs;
|
||||
|
|
@ -1071,7 +1121,6 @@ START_TEST(strargv_test)
|
|||
{ 1, {NULL, NULL}, 0 },
|
||||
{ 3, {"hello", NULL, "World"}, 0 },
|
||||
};
|
||||
struct argv_test *t;
|
||||
|
||||
ARRAY_FOR_EACH(tests, t) {
|
||||
char **strv = strv_from_argv(t->argc, t->argv);
|
||||
|
|
@ -1414,7 +1463,6 @@ START_TEST(basename_test)
|
|||
{ "/bar", "bar" },
|
||||
{ "", NULL },
|
||||
};
|
||||
struct test *t;
|
||||
|
||||
ARRAY_FOR_EACH(tests, t) {
|
||||
const char *result = safe_basename(t->path);
|
||||
|
|
@ -1442,7 +1490,6 @@ START_TEST(trunkname_test)
|
|||
{ "/bar", "bar" },
|
||||
{ "", "" },
|
||||
};
|
||||
struct test *t;
|
||||
|
||||
ARRAY_FOR_EACH(tests, t) {
|
||||
char *result = trunkname(t->path);
|
||||
|
|
@ -1461,6 +1508,8 @@ litest_utils_suite(void)
|
|||
s = suite_create("litest:utils");
|
||||
tc = tcase_create("utils");
|
||||
|
||||
tcase_add_test(tc, array_for_each);
|
||||
|
||||
tcase_add_test(tc, bitfield_helpers);
|
||||
tcase_add_test(tc, matrix_helpers);
|
||||
tcase_add_test(tc, ratelimit_helpers);
|
||||
|
|
|
|||
|
|
@ -603,8 +603,6 @@ draw_scrollbars(struct window *w, cairo_t *cr)
|
|||
static inline void
|
||||
draw_touchpoints(struct window *w, cairo_t *cr)
|
||||
{
|
||||
struct touch *t;
|
||||
|
||||
cairo_save(cr);
|
||||
ARRAY_FOR_EACH(w->touches, t) {
|
||||
if (t->state == TOUCH_ACTIVE)
|
||||
|
|
@ -1155,7 +1153,6 @@ window_init(struct window *w)
|
|||
static void
|
||||
window_cleanup(struct window *w)
|
||||
{
|
||||
struct libinput_device **dev;
|
||||
ARRAY_FOR_EACH(w->devices, dev) {
|
||||
if (*dev)
|
||||
libinput_device_unref(*dev);
|
||||
|
|
@ -1165,8 +1162,6 @@ window_cleanup(struct window *w)
|
|||
static void
|
||||
change_ptraccel(struct window *w, double amount)
|
||||
{
|
||||
struct libinput_device **dev;
|
||||
|
||||
ARRAY_FOR_EACH(w->devices, dev) {
|
||||
double speed;
|
||||
enum libinput_config_status status;
|
||||
|
|
@ -1341,7 +1336,6 @@ static void
|
|||
handle_event_device_notify(struct libinput_event *ev)
|
||||
{
|
||||
struct libinput_device *dev = libinput_event_get_device(ev);
|
||||
struct libinput_device **device;
|
||||
struct libinput *li;
|
||||
struct window *w;
|
||||
const char *type;
|
||||
|
|
|
|||
|
|
@ -307,7 +307,6 @@ handle_tablet_button_event(struct context *ctx, struct libinput_event *ev)
|
|||
{
|
||||
struct libinput_event_tablet_tool *t = libinput_event_get_tablet_tool_event(ev);
|
||||
unsigned int button = libinput_event_tablet_tool_get_button(t);
|
||||
unsigned int *btn;
|
||||
enum libinput_button_state state = libinput_event_tablet_tool_get_button_state(t);
|
||||
|
||||
ARRAY_FOR_EACH(ctx->buttons_down, btn) {
|
||||
|
|
|
|||
|
|
@ -1820,7 +1820,6 @@ print_libinput_description(struct record_device *dev)
|
|||
{LIBINPUT_DEVICE_CAP_GESTURE, "gesture"},
|
||||
{LIBINPUT_DEVICE_CAP_SWITCH, "switch"},
|
||||
};
|
||||
struct cap *cap;
|
||||
const char *sep = "";
|
||||
|
||||
if (!device)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ handle_absfuzz(struct udev_device *device)
|
|||
struct libevdev *evdev = NULL;
|
||||
int fd = -1;
|
||||
int rc;
|
||||
unsigned int *code;
|
||||
unsigned int axes[] = {ABS_X,
|
||||
ABS_Y,
|
||||
ABS_MT_POSITION_X,
|
||||
|
|
@ -88,7 +87,6 @@ out:
|
|||
static void
|
||||
handle_evdev_abs(struct udev_device *device)
|
||||
{
|
||||
unsigned int *code;
|
||||
unsigned int axes[] = {ABS_X,
|
||||
ABS_Y,
|
||||
ABS_MT_POSITION_X,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ reset_absfuzz_to_zero(struct udev_device *device)
|
|||
struct libevdev *evdev = NULL;
|
||||
int fd = -1;
|
||||
int rc;
|
||||
unsigned int *code;
|
||||
unsigned int axes[] = {ABS_X,
|
||||
ABS_Y,
|
||||
ABS_MT_POSITION_X,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue