From 6b1cdee107caaf8009037763a3cc3cd51132a1dd Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Tue, 22 Apr 2014 11:47:23 +0300 Subject: [PATCH] keymap: add and use xkb_mods_{foreach,enumerate}() To iterate over an xkb_mod_set. Slightly nicer interface and makes transitioning from darray easier. Signed-off-by: Ran Benita --- src/keymap-priv.c | 2 +- src/keymap.h | 6 ++++++ src/text.c | 2 +- src/xkbcomp/keymap-dump.c | 4 ++-- src/xkbcomp/keymap.c | 4 ++-- src/xkbcomp/vmod.c | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/keymap-priv.c b/src/keymap-priv.c index 4b0c6ad..f391336 100644 --- a/src/keymap-priv.c +++ b/src/keymap-priv.c @@ -130,7 +130,7 @@ XkbModNameToIndex(const struct xkb_mod_set *mods, xkb_atom_t name, xkb_mod_index_t i; const struct xkb_mod *mod; - darray_enumerate(i, mod, mods->mods) + xkb_mods_enumerate(i, mod, mods) if ((mod->type & type) && name == mod->name) return i; diff --git a/src/keymap.h b/src/keymap.h index ae86f6b..ed2f8e7 100644 --- a/src/keymap.h +++ b/src/keymap.h @@ -402,6 +402,12 @@ struct xkb_keymap { (iter) <= (keymap)->keys + (keymap)->max_key_code; \ (iter)++) +#define xkb_mods_foreach(iter, mods_) \ + darray_foreach((iter), (mods_)->mods) + +#define xkb_mods_enumerate(idx, iter, mods_) \ + darray_enumerate((idx), (iter), (mods_)->mods) + static inline const struct xkb_key * XkbKey(struct xkb_keymap *keymap, xkb_keycode_t kc) { diff --git a/src/text.c b/src/text.c index 8d26d19..133094a 100644 --- a/src/text.c +++ b/src/text.c @@ -265,7 +265,7 @@ ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods, if (mask == MOD_REAL_MASK_ALL) return "all"; - darray_enumerate(i, mod, mods->mods) { + xkb_mods_enumerate(i, mod, mods) { int ret; if (!(mask & (1u << i))) diff --git a/src/xkbcomp/keymap-dump.c b/src/xkbcomp/keymap-dump.c index 3b1573d..43f1642 100644 --- a/src/xkbcomp/keymap-dump.c +++ b/src/xkbcomp/keymap-dump.c @@ -126,7 +126,7 @@ write_vmods(struct xkb_keymap *keymap, struct buf *buf) const struct xkb_mod *mod; xkb_mod_index_t num_vmods = 0; - darray_foreach(mod, keymap->mods.mods) { + xkb_mods_foreach(mod, &keymap->mods) { if (mod->type != MOD_VIRT) continue; @@ -624,7 +624,7 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf) if (key->modmap == 0) continue; - darray_enumerate(i, mod, keymap->mods.mods) + xkb_mods_enumerate(i, mod, &keymap->mods) if (key->modmap & (1u << i)) write_buf(buf, "\tmodifier_map %s { %s };\n", xkb_atom_text(keymap->ctx, mod->name), diff --git a/src/xkbcomp/keymap.c b/src/xkbcomp/keymap.c index 281c6c0..acba662 100644 --- a/src/xkbcomp/keymap.c +++ b/src/xkbcomp/keymap.c @@ -38,7 +38,7 @@ ComputeEffectiveMask(struct xkb_keymap *keymap, struct xkb_mods *mods) /* The effective mask is only real mods for now. */ mods->mask = mods->mods & MOD_REAL_MASK_ALL; - darray_enumerate(i, mod, keymap->mods.mods) + xkb_mods_enumerate(i, mod, &keymap->mods) if (mods->mods & (1u << i)) mods->mask |= mod->mapping; } @@ -193,7 +193,7 @@ UpdateDerivedKeymapFields(struct xkb_keymap *keymap) /* Update keymap->mods, the virtual -> real mod mapping. */ xkb_keys_foreach(key, keymap) - darray_enumerate(i, mod, keymap->mods.mods) + xkb_mods_enumerate(i, mod, &keymap->mods) if (key->vmodmap & (1u << i)) mod->mapping |= key->modmap; diff --git a/src/xkbcomp/vmod.c b/src/xkbcomp/vmod.c index 8f4221d..61f571c 100644 --- a/src/xkbcomp/vmod.c +++ b/src/xkbcomp/vmod.c @@ -78,7 +78,7 @@ HandleVModDef(struct xkb_context *ctx, struct xkb_mod_set *mods, mapping = 0; } - darray_enumerate(i, mod, mods->mods) { + xkb_mods_enumerate(i, mod, mods) { if (mod->name == stmt->name) { if (mod->type != MOD_VIRT) { log_err(ctx, -- 2.7.4