Remove XkbKeyTypeIndex and widen index type
authorRan Benita <ran234@gmail.com>
Fri, 10 Aug 2012 19:06:12 +0000 (22:06 +0300)
committerRan Benita <ran234@gmail.com>
Fri, 10 Aug 2012 19:06:12 +0000 (22:06 +0300)
We don't need the macro, and using char for the kt_index is imaginably
too small.

Signed-off-by: Ran Benita <ran234@gmail.com>
src/keymap-dump.c
src/xkb-priv.h

index 7593068..f04f6cc 100644 (file)
@@ -677,12 +677,12 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
 
         if (key->explicit & XkbExplicitKeyTypesMask) {
             bool multi_type = false;
-            int type = XkbKeyTypeIndex(key, 0);
+            struct xkb_key_type *type = XkbKeyType(keymap, key, 0);
 
             simple = false;
 
-            for (group = 0; group < key->num_groups; group++) {
-                if (XkbKeyTypeIndex(key, group) != type) {
+            for (group = 1; group < key->num_groups; group++) {
+                if (XkbKeyType(keymap, key, group) != type) {
                     multi_type = true;
                     break;
                 }
@@ -692,17 +692,15 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
                 for (group = 0; group < key->num_groups; group++) {
                     if (!(key->explicit & (1 << group)))
                         continue;
-                    type = XkbKeyTypeIndex(key, group);
+                    type = XkbKeyType(keymap, key, group);
                     write_buf(buf, "\n\t\t\ttype[group%u]= \"%s\",",
                               group + 1,
-                              xkb_atom_text(keymap->ctx,
-                                            keymap->types[type].name));
+                              xkb_atom_text(keymap->ctx, type->name));
                 }
             }
             else {
                 write_buf(buf, "\n\t\t\ttype= \"%s\",",
-                          xkb_atom_text(keymap->ctx,
-                                        keymap->types[type].name));
+                          xkb_atom_text(keymap->ctx, type->name));
             }
         }
 
index 630760a..f53805f 100644 (file)
@@ -323,7 +323,7 @@ struct xkb_key {
 
     union xkb_action *actions;
 
-    unsigned char kt_index[XkbNumKbdGroups];
+    unsigned kt_index[XkbNumKbdGroups];
 
     xkb_group_index_t num_groups;
     /* How many levels the largest group has. */
@@ -396,17 +396,11 @@ XkbKeyGetKeycode(struct xkb_keymap *keymap, struct xkb_key *key)
 #define xkb_foreach_key(iter, keymap) \
     xkb_foreach_key_from(iter, keymap, keymap->min_key_code)
 
-static inline unsigned char
-XkbKeyTypeIndex(struct xkb_key *key, xkb_group_index_t group)
-{
-    return key->kt_index[group & 0x3];
-}
-
 static inline struct xkb_key_type *
 XkbKeyType(struct xkb_keymap *keymap, struct xkb_key *key,
            xkb_group_index_t group)
 {
-    return &keymap->types[XkbKeyTypeIndex(key, group)];
+    return &keymap->types[key->kt_index[group]];
 }
 
 static inline xkb_level_index_t