kbproto untanglement: XkbKbdNumGroups Signed-off-by: Daniel Stone <daniel@fooishbar.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
diff --git a/src/keymap-dump.c b/src/keymap-dump.c
index aa3a272..84e141b 100644
--- a/src/keymap-dump.c
+++ b/src/keymap-dump.c
@@ -627,7 +627,7 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
else
write_buf(buf, "\txkb_symbols {\n\n");
- for (tmp = group = 0; group < XkbNumKbdGroups; group++) {
+ for (tmp = group = 0; group < XKB_NUM_GROUPS; group++) {
if (!keymap->group_names[group])
continue;
write_buf(buf,
diff --git a/src/xkb-priv.h b/src/xkb-priv.h
index f40095c..62a1dea 100644
--- a/src/xkb-priv.h
+++ b/src/xkb-priv.h
@@ -96,6 +96,7 @@ typedef uint32_t xkb_atom_t;
#define XKB_LEVEL_INVALID 0xffffffff
#define XKB_KEY_NAME_LENGTH 4
+#define XKB_NUM_GROUPS 4
struct xkb_context {
int refcnt;
@@ -309,7 +310,7 @@ struct xkb_key {
union xkb_action *actions;
- unsigned kt_index[XkbNumKbdGroups];
+ unsigned kt_index[XKB_NUM_GROUPS];
xkb_group_index_t num_groups;
/* How many levels the largest group has. */
@@ -353,7 +354,7 @@ struct xkb_keymap {
/* Number of groups in the key with the most groups. */
xkb_group_index_t num_groups;
- xkb_atom_t group_names[XkbNumKbdGroups];
+ xkb_atom_t group_names[XKB_NUM_GROUPS];
struct xkb_indicator_map indicators[XkbNumIndicators];
diff --git a/src/xkbcomp/expr.c b/src/xkbcomp/expr.c
index d42556d..72b94d7 100644
--- a/src/xkbcomp/expr.c
+++ b/src/xkbcomp/expr.c
@@ -396,9 +396,9 @@ ExprResolveGroup(struct xkb_context *ctx, const ExprDef *expr,
if (!ok)
return false;
- if (result <= 0 || result > XkbNumKbdGroups) {
+ if (result <= 0 || result > XKB_NUM_GROUPS) {
log_err(ctx, "Group index %u is out of range (1..%d)\n",
- result, XkbNumKbdGroups);
+ result, XKB_NUM_GROUPS);
return false;
}
diff --git a/src/xkbcomp/rules.c b/src/xkbcomp/rules.c
index ee936c9..4a07657 100644
--- a/src/xkbcomp/rules.c
+++ b/src/xkbcomp/rules.c
@@ -86,7 +86,7 @@
*
* Mapping ::= { Mlvo } "=" { Kccgst } "\n"
* Mlvo ::= "model" | "option" | ("layout" | "variant") [ Index ]
- * Index ::= "[" 1..XkbNumKbdGroups "]"
+ * Index ::= "[" 1..XKB_NUM_GROUPS "]"
* Kccgst ::= "keycodes" | "symbols" | "types" | "compat" | "geometry"
*
* Rule ::= { MlvoValue } "=" { KccgstValue } "\n"
@@ -538,7 +538,7 @@ extract_group_index(const char *s, size_t max_len, xkb_group_index_t *out)
return -1;
if (s[0] != '[' || !isdigit(s[1]) || s[2] != ']')
return -1;
- if (s[1] - '0' < 1 || s[1] - '0' > XkbNumKbdGroups)
+ if (s[1] - '0' < 1 || s[1] - '0' > XKB_NUM_GROUPS)
return -1;
/* To zero-based index. */
*out = s[1] - '0' - 1;
diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c
index 79f5398..f4cf0b3 100644
--- a/src/xkbcomp/symbols.c
+++ b/src/xkbcomp/symbols.c
@@ -61,26 +61,26 @@ typedef struct _KeyInfo {
unsigned char typesDefined;
unsigned char symsDefined;
unsigned char actsDefined;
- xkb_level_index_t numLevels[XkbNumKbdGroups];
+ xkb_level_index_t numLevels[XKB_NUM_GROUPS];
/* syms[group] -> Single array for all the keysyms in the group. */
- darray_xkb_keysym_t syms[XkbNumKbdGroups];
+ darray_xkb_keysym_t syms[XKB_NUM_GROUPS];
/*
* symsMapIndex[group][level] -> The index from which the syms for
* the level begin in the syms[group] array. Remember each keycode
* can have multiple keysyms in each level (that is, each key press
* can result in multiple keysyms).
*/
- darray(int) symsMapIndex[XkbNumKbdGroups];
+ darray(int) symsMapIndex[XKB_NUM_GROUPS];
/*
* symsMapNumEntries[group][level] -> How many syms are in
* syms[group][symsMapIndex[group][level]].
*/
- darray(size_t) symsMapNumEntries[XkbNumKbdGroups];
+ darray(size_t) symsMapNumEntries[XKB_NUM_GROUPS];
- darray_xkb_action acts[XkbNumKbdGroups];
+ darray_xkb_action acts[XKB_NUM_GROUPS];
- xkb_atom_t types[XkbNumKbdGroups];
+ xkb_atom_t types[XKB_NUM_GROUPS];
enum key_repeat repeat;
xkb_mod_mask_t vmodmap;
xkb_atom_t dfltType;
@@ -104,7 +104,7 @@ InitKeyInfo(KeyInfo *keyi, unsigned file_id)
keyi->name = KeyNameToLong(dflt);
keyi->typesDefined = keyi->symsDefined = keyi->actsDefined = 0;
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
keyi->numLevels[i] = 0;
keyi->types[i] = XKB_ATOM_NONE;
darray_init(keyi->syms[i]);
@@ -125,7 +125,7 @@ ClearKeyInfo(KeyInfo *keyi)
{
xkb_group_index_t i;
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
darray_free(keyi->syms[i]);
darray_free(keyi->symsMapIndex[i]);
darray_free(keyi->symsMapNumEntries[i]);
@@ -146,7 +146,7 @@ CopyKeyInfo(KeyInfo * old, KeyInfo * new, bool clearOld)
*new = *old;
if (clearOld) {
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
old->numLevels[i] = 0;
darray_init(old->symsMapIndex[i]);
darray_init(old->symsMapNumEntries[i]);
@@ -155,7 +155,7 @@ CopyKeyInfo(KeyInfo * old, KeyInfo * new, bool clearOld)
}
}
else {
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
darray_copy(new->syms[i], old->syms[i]);
darray_copy(new->symsMapIndex[i], old->symsMapIndex[i]);
darray_copy(new->symsMapNumEntries[i], old->symsMapNumEntries[i]);
@@ -189,7 +189,7 @@ typedef struct _SymbolsInfo {
KeyInfo dflt;
VModInfo vmods;
ActionsInfo *actions;
- xkb_atom_t groupNames[XkbNumKbdGroups];
+ xkb_atom_t groupNames[XKB_NUM_GROUPS];
struct list modMaps;
@@ -210,7 +210,7 @@ InitSymbolsInfo(SymbolsInfo *info, struct xkb_keymap *keymap,
darray_init(info->keys);
darray_growalloc(info->keys, 110);
list_init(&info->modMaps);
- for (i = 0; i < XkbNumKbdGroups; i++)
+ for (i = 0; i < XKB_NUM_GROUPS; i++)
info->groupNames[i] = XKB_ATOM_NONE;
InitKeyInfo(&info->dflt, file_id);
InitVModInfo(&info->vmods, keymap);
@@ -504,7 +504,7 @@ MergeKeys(SymbolsInfo *info, KeyInfo *into, KeyInfo *from)
int verbosity = xkb_get_log_verbosity(info->keymap->ctx);
if (from->merge == MERGE_REPLACE) {
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
if (into->numLevels[i] != 0) {
darray_free(into->syms[i]);
darray_free(into->acts[i]);
@@ -518,7 +518,7 @@ MergeKeys(SymbolsInfo *info, KeyInfo *into, KeyInfo *from)
report = (verbosity > 9 ||
(into->file_id == from->file_id && verbosity > 0));
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
if (from->numLevels[i] > 0) {
if (into->numLevels[i] == 0) {
into->numLevels[i] = from->numLevels[i];
@@ -709,7 +709,7 @@ MergeIncludedSymbols(SymbolsInfo *into, SymbolsInfo *from,
into->name = from->name;
from->name = NULL;
}
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
if (from->groupNames[i] != XKB_ATOM_NONE) {
if ((merge != MERGE_AUGMENT) ||
(into->groupNames[i] == XKB_ATOM_NONE))
@@ -803,7 +803,7 @@ GetGroupIndex(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx,
else
defined = keyi->actsDefined;
- for (i = 0; i < XkbNumKbdGroups; i++) {
+ for (i = 0; i < XKB_NUM_GROUPS; i++) {
if ((defined & (1 << i)) == 0) {
*ndx_rtrn = i;
return true;
@@ -813,7 +813,7 @@ GetGroupIndex(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx,
log_err(info->keymap->ctx,
"Too many groups of %s for key %s (max %u); "
"Ignoring %s defined for extra groups\n",
- name, LongKeyNameText(keyi->name), XkbNumKbdGroups + 1, name);
+ name, LongKeyNameText(keyi->name), XKB_NUM_GROUPS + 1, name);
return false;
}
@@ -1308,7 +1308,7 @@ SetExplicitGroup(SymbolsInfo *info, KeyInfo *keyi)
"but key %s has more than one group defined; "
"All groups except first one will be ignored\n",
info->name, LongKeyNameText(keyi->name));
- for (i = 1; i < XkbNumKbdGroups; i++) {
+ for (i = 1; i < XKB_NUM_GROUPS; i++) {
keyi->numLevels[i] = 0;
darray_free(keyi->syms[i]);
darray_free(keyi->acts[i]);
@@ -1599,7 +1599,7 @@ PrepareKeyDef(KeyInfo *keyi)
defined = keyi->symsDefined | keyi->actsDefined | keyi->typesDefined;
/* get highest group number */
- for (i = XkbNumKbdGroups - 1; i > 0; i--) {
+ for (i = XKB_NUM_GROUPS - 1; i > 0; i--) {
if (defined & (1 << i))
break;
}
@@ -1714,7 +1714,7 @@ CopySymbolsDef(SymbolsInfo *info, KeyInfo *keyi,
xkb_level_index_t width, tmp;
struct xkb_key_type * type;
bool haveActions, autoType, useAlias;
- unsigned types[XkbNumKbdGroups];
+ unsigned types[XKB_NUM_GROUPS];
unsigned int symIndex = 0;
useAlias = (start_from == 0);
@@ -1731,7 +1731,7 @@ CopySymbolsDef(SymbolsInfo *info, KeyInfo *keyi,
haveActions = false;
width = 0;
- for (i = nGroups = 0; i < XkbNumKbdGroups; i++) {
+ for (i = nGroups = 0; i < XKB_NUM_GROUPS; i++) {
if (((i + 1) > nGroups)
&& (((keyi->symsDefined | keyi->actsDefined) & (1 << i))
|| (keyi->typesDefined) & (1 << i)))
@@ -1933,7 +1933,7 @@ CompileSymbols(XkbFile *file, struct xkb_keymap *keymap,
if (info.name)
keymap->symbols_section_name = strdup(info.name);
- for (i = 0; i < XkbNumKbdGroups; i++)
+ for (i = 0; i < XKB_NUM_GROUPS; i++)
if (info.groupNames[i] != XKB_ATOM_NONE)
keymap->group_names[i] = info.groupNames[i];