}
Bool
-SimpleLookup(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+SimpleLookup(char * priv, uint32_t field, unsigned type,
+ ExprResult * val_rtrn)
{
LookupEntry *entry;
const char *str;
- if ((priv == NULL) ||
- (field == None) || (elem != None) ||
+ if ((priv == NULL) || (field == None) ||
((type != TypeInt) && (type != TypeFloat)))
{
return False;
}
Bool
-RadioLookup(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+RadioLookup(char * priv, uint32_t field, unsigned type, ExprResult * val_rtrn)
{
const char *str;
int rg;
- if ((field == None) || (elem != None) || (type != TypeInt))
+ if ((field == None) || (type != TypeInt))
return False;
str = XkbcAtomText(field);
if (str)
};
int
-LookupModIndex(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+LookupModIndex(char * priv, uint32_t field, unsigned type,
+ ExprResult * val_rtrn)
{
- return SimpleLookup((char *) modIndexNames, elem, field, type,
- val_rtrn);
+ return SimpleLookup((char *) modIndexNames, field, type, val_rtrn);
}
static int
-LookupModMask(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+LookupModMask(char * priv, uint32_t field, unsigned type,
+ ExprResult * val_rtrn)
{
char *str;
Bool ret = True;
- if ((elem != None) || (type != TypeInt))
+ if (type != TypeInt)
return False;
str = XkbcAtomGetString(field);
if (str == NULL)
val_rtrn->uval = 0xff;
else if (uStrCaseCmp(str, "none") == 0)
val_rtrn->uval = 0;
- else if (LookupModIndex(priv, elem, field, type, val_rtrn))
+ else if (LookupModIndex(priv, field, type, val_rtrn))
val_rtrn->uval = (1 << val_rtrn->uval);
else if (priv != NULL)
{
LookupPriv *lpriv = (LookupPriv *) priv;
if ((lpriv->chain == NULL) ||
- (!(*lpriv->chain) (lpriv->chainPriv, elem, field, type,
- val_rtrn)))
+ (!(*lpriv->chain) (lpriv->chainPriv, field, type, val_rtrn)))
ret = False;
}
else
}
int
-ExprResolveModMask(ExprDef * expr,
- ExprResult * val_rtrn)
-{
- LookupPriv priv;
-
- priv.priv = NULL;
- priv.chain = NULL;
- priv.chainPriv = NULL;
- return ExprResolveMask(expr, val_rtrn, LookupModMask, (char *) & priv);
-}
-
-int
-ExprResolveVModMask(ExprDef * expr,
- ExprResult * val_rtrn,
- struct xkb_desc *xkb)
-{
- LookupPriv priv;
-
- priv.priv = NULL;
- priv.chain = LookupVModMask;
- priv.chainPriv = (char *) xkb;
- return ExprResolveMask(expr, val_rtrn, LookupModMask, (char *) & priv);
-}
-
-int
ExprResolveBoolean(ExprDef * expr,
ExprResult * val_rtrn)
{
ERROR("Numeric default \"%s.%s\" unknown\n",
XkbcAtomText(expr->value.field.element),
XkbcAtomText(expr->value.field.field));
- return ok;
+ return False;
case OpAdd:
case OpSubtract:
case OpMultiply:
case ExprIdent:
if (lookup)
{
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
+ ok = (*lookup) (lookupPriv, expr->value.str, TypeInt, val_rtrn);
}
if (!ok)
ERROR("Identifier \"%s\" of type int is unknown\n",
XkbcAtomText(expr->value.str));
return ok;
case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR("Default \"%s.%s\" of type int is unknown\n",
- XkbcAtomText(expr->value.field.element),
- XkbcAtomText(expr->value.field.field));
- return ok;
+ ERROR("Default \"%s.%s\" of type int is unknown\n",
+ XkbcAtomText(expr->value.field.element),
+ XkbcAtomText(expr->value.field.field));
+ return False;
case OpAdd:
case OpSubtract:
case OpMultiply:
exprOpText(expr->op));
return False;
}
- if (!SimpleLookup((char *) values, (uint32_t) None, expr->value.str,
- (unsigned) TypeInt, val_rtrn))
+ if (!SimpleLookup((char *) values, expr->value.str, TypeInt, val_rtrn))
{
int nOut = 0;
ERROR("Illegal identifier %s (expected one of: ",
return True;
}
-int
-ExprResolveMask(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, char * lookupPriv)
+static int
+ExprResolveMaskLookup(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup,
+ char * lookupPriv)
{
int ok = 0;
ExprResult leftRtrn, rightRtrn;
val_rtrn->ival = expr->value.ival;
return True;
case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
+ ok = (*lookup) (lookupPriv, expr->value.str, TypeInt, val_rtrn);
if (!ok)
ERROR("Identifier \"%s\" of type int is unknown\n",
XkbcAtomText(expr->value.str));
return ok;
case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR("Default \"%s.%s\" of type int is unknown\n",
- XkbcAtomText(expr->value.field.element),
- XkbcAtomText(expr->value.field.field));
- return ok;
+ ERROR("Default \"%s.%s\" of type int is unknown\n",
+ XkbcAtomText(expr->value.field.element),
+ XkbcAtomText(expr->value.field.field));
+ return False;
case ExprArrayRef:
bogus = "array reference";
case ExprActionDecl:
case OpDivide:
left = expr->value.binary.left;
right = expr->value.binary.right;
- if (ExprResolveMask(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveMask(right, &rightRtrn, lookup, lookupPriv))
+ if (ExprResolveMaskLookup(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveMaskLookup(right, &rightRtrn, lookup, lookupPriv))
{
switch (expr->op)
{
}
int
+ExprResolveMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ LookupEntry * values)
+{
+ return ExprResolveMaskLookup(expr, val_rtrn, SimpleLookup,
+ (char *) values);
+}
+
+int
+ExprResolveModMask(ExprDef * expr,
+ ExprResult * val_rtrn)
+{
+ LookupPriv priv;
+
+ priv.priv = NULL;
+ priv.chain = NULL;
+ priv.chainPriv = NULL;
+ return ExprResolveMaskLookup(expr, val_rtrn, LookupModMask,
+ (char *) & priv);
+}
+
+int
+ExprResolveVModMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ struct xkb_desc *xkb)
+{
+ LookupPriv priv;
+
+ priv.priv = NULL;
+ priv.chain = LookupVModMask;
+ priv.chainPriv = (char *) xkb;
+ return ExprResolveMaskLookup(expr, val_rtrn, LookupModMask,
+ (char *) & priv);
+}
+
+int
ExprResolveKeySym(ExprDef * expr,
ExprResult * val_rtrn)
{
{
if (arrayNdx != NULL)
return ReportIndicatorNotArray(led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (char *) groupNames))
+ if (!ExprResolveMask(value, &rtrn, groupNames))
return ReportIndicatorBadType(led, field, "group mask");
led->groups = rtrn.uval;
led->defs.defined |= _LED_Groups;
{
if (arrayNdx != NULL)
return ReportIndicatorNotArray(led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (char *) ctrlNames))
+ if (!ExprResolveMask(value, &rtrn, ctrlNames))
return ReportIndicatorBadType(led, field,
"controls mask");
led->ctrls = rtrn.uval;
{
if (arrayNdx != NULL)
return ReportIndicatorNotArray(led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (char *) modComponentNames))
+ if (!ExprResolveMask(value, &rtrn, modComponentNames))
{
return ReportIndicatorBadType(led, field,
"mask of modifier state components");
{
if (arrayNdx != NULL)
return ReportIndicatorNotArray(led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (char *) groupComponentNames))
+ if (!ExprResolveMask(value, &rtrn, groupComponentNames))
{
return ReportIndicatorBadType(led, field,
"mask of group state components");
* Returns the index of the given modifier in the xkb->names->vmods array.
*
* @param priv Pointer to the xkb data structure.
- * @param elem Must be None, otherwise return False.
* @param field The Atom of the modifier's name (e.g. Atom for LAlt)
* @param type Must be TypeInt, otherwise return False.
* @param val_rtrn Set to the index of the modifier that matches.
* undefined.
*/
static int
-LookupVModIndex(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+LookupVModIndex(char * priv, uint32_t field, unsigned type,
+ ExprResult * val_rtrn)
{
int i;
struct xkb_desc * xkb;
xkb = (struct xkb_desc *) priv;
- if ((xkb == NULL) || (xkb->names == NULL) || (elem != None)
- || (type != TypeInt))
+ if ((xkb == NULL) || (xkb->names == NULL) || (type != TypeInt))
{
return False;
}
* undefined.
*/
int
-LookupVModMask(char * priv,
- uint32_t elem, uint32_t field, unsigned type, ExprResult * val_rtrn)
+LookupVModMask(char * priv, uint32_t field, unsigned type, ExprResult * val_rtrn)
{
- if (LookupVModIndex(priv, elem, field, type, val_rtrn))
+ if (LookupVModIndex(priv, field, type, val_rtrn))
{
register unsigned ndx = val_rtrn->uval;
val_rtrn->uval = (1 << (XkbNumModifiers + ndx));
ExprResult rtrn;
name = xkb_intern_atom("NumLock");
- if ((xkb) && LookupVModIndex((char *) xkb, None, name, TypeInt, &rtrn))
+ if ((xkb) && LookupVModIndex((char *) xkb, name, TypeInt, &rtrn))
{
return rtrn.ival;
}