keymap: add and use xkb_mods_{foreach,enumerate}()
authorRan Benita <ran234@gmail.com>
Tue, 22 Apr 2014 08:47:23 +0000 (11:47 +0300)
committerRan Benita <ran234@gmail.com>
Tue, 22 Apr 2014 11:56:01 +0000 (14:56 +0300)
To iterate over an xkb_mod_set. Slightly nicer interface and makes
transitioning from darray easier.

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

index 4b0c6ad9697cd63aaa9eb91a8efba1b187fa29b5..f391336027bc67d33580cce0ee32f942206487bb 100644 (file)
@@ -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;
 
index ae86f6b26620fc66f0dd286b764d8915c22894ba..ed2f8e72ac22aab5d75f7ddbbb2455a9eff4742f 100644 (file)
@@ -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)
 {
index 8d26d1952fd81a46101b18393c3f5023f9dc8162..133094a3f11098302d0d585a6442e5e6311b3ed0 100644 (file)
@@ -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)))
index 3b1573d81a56633704ea541606455e1723f280ff..43f1642082fd4d3e1f4bb37b81d2653aacffa663 100644 (file)
@@ -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),
index 281c6c07e10d6ad696d0d248ec350c84bf911559..acba662a83fe29d89170a2314eebe278d216d9b4 100644 (file)
@@ -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;
 
index 8f4221dc97163c9ac4bbffacf6bfba0de0bf50d0..61f571c0c9e0dcecef16a0f8d750b6fb73db7df7 100644 (file)
@@ -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,