Use our types instead of int/uint32_t in a few places
[platform/upstream/libxkbcommon.git] / src / keymap.h
index 243a5cf..62a8940 100644 (file)
@@ -88,8 +88,6 @@
 #include "utils.h"
 #include "context.h"
 
-#define XKB_KEY_NAME_LENGTH 4
-
 /* This limit is artificially enforced, we do not depend on it any where.
  * The reason it's still here is that the rules file format does not
  * support multiple groups very well, and the rules shipped with
@@ -280,15 +278,15 @@ struct xkb_sym_interpret {
 struct xkb_indicator_map {
     xkb_atom_t name;
     enum xkb_state_component which_groups;
-    uint32_t groups;
+    xkb_layout_mask_t groups;
     enum xkb_state_component which_mods;
     struct xkb_mods mods;
     enum xkb_action_controls ctrls;
 };
 
 struct xkb_key_alias {
-    char real[XKB_KEY_NAME_LENGTH];
-    char alias[XKB_KEY_NAME_LENGTH];
+    xkb_atom_t real;
+    xkb_atom_t alias;
 };
 
 struct xkb_controls {
@@ -331,14 +329,15 @@ struct xkb_level {
 
 struct xkb_group {
     bool explicit_type;
-    unsigned type_index;
+    /* Points to a type in keymap->types. */
+    const struct xkb_key_type *type;
     /* Use XkbKeyGroupWidth for the number of levels. */
     struct xkb_level *levels;
 };
 
 struct xkb_key {
     xkb_keycode_t keycode;
-    char name[XKB_KEY_NAME_LENGTH];
+    xkb_atom_t name;
 
     enum xkb_explicit_components explicit;
 
@@ -406,42 +405,10 @@ XkbKey(struct xkb_keymap *keymap, xkb_keycode_t kc)
 #define xkb_foreach_key(iter, keymap) \
     darray_foreach(iter, keymap->keys)
 
-static inline struct xkb_key_type *
-XkbKeyType(struct xkb_keymap *keymap, const struct xkb_key *key,
-           xkb_layout_index_t layout)
-{
-    return &keymap->types[key->groups[layout].type_index];
-}
-
 static inline xkb_level_index_t
-XkbKeyGroupWidth(struct xkb_keymap *keymap, const struct xkb_key *key,
-                 xkb_layout_index_t layout)
-{
-    return XkbKeyType(keymap, key, layout)->num_levels;
-}
-
-static inline unsigned int
-XkbKeyNumSyms(const struct xkb_key *key, xkb_layout_index_t layout,
-              xkb_level_index_t level)
-{
-    return key->groups[layout].levels[level].num_syms;
-}
-
-static inline const xkb_keysym_t *
-XkbKeySymEntry(const struct xkb_key *key, xkb_layout_index_t layout,
-               xkb_level_index_t level)
-{
-    if (XkbKeyNumSyms(key, layout, level) <= 1)
-        return &key->groups[layout].levels[level].u.sym;
-    else
-        return key->groups[layout].levels[level].u.syms;
-}
-
-static inline const union xkb_action *
-XkbKeyActionEntry(const struct xkb_key *key, xkb_layout_index_t layout,
-                  xkb_level_index_t level)
+XkbKeyGroupWidth(const struct xkb_key *key, xkb_layout_index_t layout)
 {
-    return &key->groups[layout].levels[level].action;
+    return key->groups[layout].type->num_levels;
 }
 
 struct xkb_keymap *