keymap: share LevelsSameSyms()
authorRan Benita <ran234@gmail.com>
Sat, 27 Feb 2016 22:33:19 +0000 (00:33 +0200)
committerRan Benita <ran234@gmail.com>
Sat, 27 Feb 2016 22:33:19 +0000 (00:33 +0200)
The function is generic enough.

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

index d21dda7..08945ca 100644 (file)
@@ -137,3 +137,13 @@ XkbModNameToIndex(const struct xkb_mod_set *mods, xkb_atom_t name,
 
     return XKB_MOD_INVALID;
 }
+
+bool
+XkbLevelsSameSyms(const struct xkb_level *a, const struct xkb_level *b)
+{
+    if (a->num_syms != b->num_syms)
+        return false;
+    if (a->num_syms <= 1)
+        return a->u.sym == b->u.sym;
+    return memcmp(a->u.syms, b->u.syms, sizeof(*a->u.syms) * a->num_syms) == 0;
+}
index d20442f..1093e47 100644 (file)
@@ -455,6 +455,9 @@ xkb_mod_index_t
 XkbModNameToIndex(const struct xkb_mod_set *mods, xkb_atom_t name,
                   enum mod_type type);
 
+bool
+XkbLevelsSameSyms(const struct xkb_level *a, const struct xkb_level *b);
+
 xkb_layout_index_t
 XkbWrapGroupIntoRange(int32_t group,
                       xkb_layout_index_t num_groups,
index cda93b0..9b05ec9 100644 (file)
@@ -218,19 +218,6 @@ KeyInfoText(SymbolsInfo *info, KeyInfo *keyi)
 }
 
 static bool
-LevelsSameSyms(const struct xkb_level *a, const struct xkb_level *b)
-{
-    if (a->num_syms != b->num_syms)
-        return false;
-    if (a->num_syms <= 1)
-        return a->u.sym == b->u.sym;
-    else
-        return memcmp(a->u.syms, b->u.syms,
-                      sizeof(*a->u.syms) * a->num_syms) == 0;
-
-}
-
-static bool
 MergeGroups(SymbolsInfo *info, GroupInfo *into, GroupInfo *from, bool clobber,
             bool report, xkb_layout_index_t group, xkb_atom_t key_name)
 {
@@ -312,7 +299,7 @@ MergeGroups(SymbolsInfo *info, GroupInfo *into, GroupInfo *from, bool clobber,
                 intoLevel->u.sym = fromLevel->u.sym;
             fromLevel->num_syms = 0;
         }
-        else if (!LevelsSameSyms(fromLevel, intoLevel)) {
+        else if (!XkbLevelsSameSyms(fromLevel, intoLevel)) {
             if (report)
                 log_warn(info->ctx,
                          "Multiple symbols for level %d/group %u on key %s; "