Use a macro for type_to_mask
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 5 Jun 2013 06:03:54 +0000 (16:03 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 26 Jun 2013 07:47:28 +0000 (17:47 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev-util.h

index b052597..2c4128d 100644 (file)
@@ -53,30 +53,26 @@ set_bit_state(unsigned long *array, int bit, int state)
                clear_bit(array, bit);
 }
 
+#define max_mask(uc, lc) \
+       case EV_##uc: \
+                       *mask = dev->lc##_bits; \
+                       max = libevdev_get_event_type_max(type); \
+               break;
+
+
 static inline int
 type_to_mask_const(const struct libevdev *dev, unsigned int type, const unsigned long **mask)
 {
        int max;
 
        switch(type) {
-               case EV_ABS:
-                       *mask = dev->abs_bits;
-                       max = ABS_MAX;
-                       break;
-               case EV_REL:
-                       *mask = dev->rel_bits;
-                       max = REL_MAX;
-                       break;
-               case EV_KEY:
-                       *mask = dev->key_bits;
-                       max = KEY_MAX;
-                       break;
-               case EV_LED:
-                       *mask = dev->led_bits;
-                       max = LED_MAX;
-                       break;
+               max_mask(ABS, abs);
+               max_mask(REL, rel);
+               max_mask(KEY, key);
+               max_mask(LED, led);
                default:
-                    return -1;
+                    max = -1;
+                    break;
        }
 
        return max;
@@ -88,27 +84,18 @@ type_to_mask(struct libevdev *dev, unsigned int type, unsigned long **mask)
        int max;
 
        switch(type) {
-               case EV_ABS:
-                       *mask = dev->abs_bits;
-                       max = ABS_MAX;
-                       break;
-               case EV_REL:
-                       *mask = dev->rel_bits;
-                       max = REL_MAX;
-                       break;
-               case EV_KEY:
-                       *mask = dev->key_bits;
-                       max = KEY_MAX;
-                       break;
-               case EV_LED:
-                       *mask = dev->led_bits;
-                       max = LED_MAX;
-                       break;
+               max_mask(ABS, abs);
+               max_mask(REL, rel);
+               max_mask(KEY, key);
+               max_mask(LED, led);
                default:
-                    return -1;
+                    max = -1;
+                    break;
        }
 
        return max;
 }
 
+#undef max_mask
+
 #endif