From: Daniel Stone Date: Mon, 20 Feb 2012 15:47:57 +0000 (+0000) Subject: Add ExprResolveGroup helper X-Git-Tag: xkbcommon-0.2.0~774 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e314931e8f464af15be8766c2032ae8e8aa94c2c;p=platform%2Fupstream%2Flibxkbcommon.git Add ExprResolveGroup helper Just a dumb wrapper around ExprResolveInteger. Signed-off-by: Daniel Stone --- diff --git a/src/xkbcomp/action.c b/src/xkbcomp/action.c index 0ab932c..8a1b422 100644 --- a/src/xkbcomp/action.c +++ b/src/xkbcomp/action.c @@ -462,18 +462,6 @@ HandleLockMods(struct xkb_desc * xkb, return ReportIllegal(action->type, field); } -static LookupEntry groupNames[] = { - {"group1", 1}, - {"group2", 2}, - {"group3", 3}, - {"group4", 4}, - {"group5", 5}, - {"group6", 6}, - {"group7", 7}, - {"group8", 8}, - {NULL, 0}, -}; - static Bool CheckGroupField(unsigned action, ExprDef * value, unsigned *flags_inout, int *grp_rtrn) @@ -492,7 +480,7 @@ CheckGroupField(unsigned action, spec = value; } - if (!ExprResolveInteger(spec, &rtrn, SimpleLookup, (char *) groupNames)) + if (!ExprResolveGroup(spec, &rtrn)) return ReportMismatch(action, F_Group, "integer (range 1..8)"); if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups)) { diff --git a/src/xkbcomp/expr.c b/src/xkbcomp/expr.c index bff5d64..39ce3a0 100644 --- a/src/xkbcomp/expr.c +++ b/src/xkbcomp/expr.c @@ -658,6 +658,26 @@ ExprResolveRadioGroup(ExprDef * expr, } int +ExprResolveGroup(ExprDef * expr, + ExprResult * val_rtrn) +{ + static LookupEntry group_names[] = { + { "group1", 1 }, + { "group2", 2 }, + { "group3", 3 }, + { "group4", 4 }, + { "group5", 5 }, + { "group6", 6 }, + { "group7", 7 }, + { "group8", 8 }, + { NULL, 0 } + }; + + return ExprResolveInteger(expr, val_rtrn, SimpleLookup, + (char *) group_names); +} + +int ExprResolveLevel(ExprDef * expr, ExprResult * val_rtrn) { diff --git a/src/xkbcomp/expr.h b/src/xkbcomp/expr.h index b3c1528..cdcfc0b 100644 --- a/src/xkbcomp/expr.h +++ b/src/xkbcomp/expr.h @@ -124,6 +124,10 @@ extern int ExprResolveLevel(ExprDef * /* expr */ , ExprResult * /* val_rtrn */ ); +extern int ExprResolveGroup(ExprDef * /* expr */ , + ExprResult * /* val_rtrn */ + ); + extern int ExprResolveButton(ExprDef * /* expr */ , ExprResult * /* val_rtrn */ ); diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c index c98fc1c..08b9bd7 100644 --- a/src/xkbcomp/symbols.c +++ b/src/xkbcomp/symbols.c @@ -860,19 +860,6 @@ HandleIncludeSymbols(IncludeStmt * stmt, return (info->errorCount == 0); } -static LookupEntry groupNames[] = { - {"group1", 1}, - {"group2", 2}, - {"group3", 3}, - {"group4", 4}, - {"group5", 5}, - {"group6", 6}, - {"group7", 7}, - {"group8", 8}, - {NULL, 0} -}; - - #define SYMBOLS 1 #define ACTIONS 2 @@ -910,8 +897,7 @@ GetGroupIndex(KeyInfo * key, ACTION("Ignoring %s defined for extra groups\n", name); return False; } - if (!ExprResolveInteger - (arrayNdx, &tmp, SimpleLookup, (char *) groupNames)) + if (!ExprResolveGroup(arrayNdx, &tmp)) { ERROR("Illegal group index for %s of key %s\n", name, longText(key->name)); @@ -1142,8 +1128,7 @@ SetSymbolsField(KeyInfo * key, key->dfltType = xkb_intern_atom(tmp.str); key->defs.defined |= _Key_Type_Dflt; } - else if (!ExprResolveInteger(arrayNdx, &ndx, SimpleLookup, - (char *) groupNames)) + else if (!ExprResolveGroup(arrayNdx, &ndx)) { ERROR("Illegal group index for type of key %s\n", longText(key->name)); @@ -1343,8 +1328,7 @@ SetSymbolsField(KeyInfo * key, else if ((uStrCaseCmp(field, "groupsredirect") == 0) || (uStrCaseCmp(field, "redirectgroups") == 0)) { - if (!ExprResolveInteger - (value, &tmp, SimpleLookup, (char *) groupNames)) + if (!ExprResolveGroup(value, &tmp)) { ERROR("Illegal group index for redirect of key %s\n", longText(key->name)); @@ -1382,8 +1366,7 @@ SetGroupName(SymbolsInfo * info, ExprDef * arrayNdx, ExprDef * value) ACTION("Group name definition without array subscript ignored\n"); return False; } - if (!ExprResolveInteger - (arrayNdx, &tmp, SimpleLookup, (char *) groupNames)) + if (!ExprResolveGroup(arrayNdx, &tmp)) { ERROR("Illegal index in group name definition\n"); ACTION("Definition with non-integer array index ignored\n"); @@ -1470,8 +1453,7 @@ HandleSymbolsVar(VarDef * stmt, struct xkb_desc * xkb, SymbolsInfo * info) && ((uStrCaseCmp(field.str, "groupsredirect") == 0) || (uStrCaseCmp(field.str, "redirectgroups") == 0))) { - if (!ExprResolveInteger(stmt->value, &tmp, - SimpleLookup, (char *) groupNames)) + if (!ExprResolveGroup(stmt->value, &tmp)) { ERROR("Illegal group index for global groupsRedirect\n"); ACTION("Definition with non-integer group ignored\n");