diff options
author | Ran Benita <ran234@gmail.com> | 2016-02-28 00:33:19 +0200 |
---|---|---|
committer | Ran Benita <ran234@gmail.com> | 2016-02-28 00:33:19 +0200 |
commit | 39082082f6716e7ffca78566db506edbd6822b53 (patch) | |
tree | d668a4a359d67b62a54a90451f872d51c2967486 /src | |
parent | c8a25645885517e258935c23e7bd57e5c357ef94 (diff) | |
download | xorg-lib-libxkbcommon-39082082f6716e7ffca78566db506edbd6822b53.tar.gz |
keymap: share LevelsSameSyms()
The function is generic enough.
Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/keymap-priv.c | 10 | ||||
-rw-r--r-- | src/keymap.h | 3 | ||||
-rw-r--r-- | src/xkbcomp/symbols.c | 15 |
3 files changed, 14 insertions, 14 deletions
diff --git a/src/keymap-priv.c b/src/keymap-priv.c index d21dda7..08945ca 100644 --- a/src/keymap-priv.c +++ b/src/keymap-priv.c @@ -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; +} diff --git a/src/keymap.h b/src/keymap.h index d20442f..1093e47 100644 --- a/src/keymap.h +++ b/src/keymap.h @@ -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, diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c index cda93b0..9b05ec9 100644 --- a/src/xkbcomp/symbols.c +++ b/src/xkbcomp/symbols.c @@ -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; " |