{
if (arrayNdx != NULL)
return ReportSINotArray(si, field, info);
- ok = ResolveVirtualModifier(value, &tmp, &info->vmods);
+ ok = ResolveVirtualModifier(value, xkb, &tmp, &info->vmods);
if (ok)
{
si->interp.virtual_mod = tmp.uval;
info->errorCount++;
break;
case StmtVModDef:
- if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+ if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
info->errorCount++;
break;
case StmtKeycodeDef:
info->errorCount++;
break;
case StmtVModDef: /* virtual_modifiers NumLock, ... */
- if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+ if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
info->errorCount++;
break;
case StmtKeyAliasDef:
info->errorCount++;
break;
case StmtVModDef:
- if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+ if (!HandleVModDef((VModDef *) stmt, xkb, merge, &info->vmods))
info->errorCount++;
break;
case StmtInterpDef:
* @param mergeMode Merge strategy (e.g. MergeOverride)
*/
Bool
-HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
+HandleVModDef(VModDef * stmt, struct xkb_desc *xkb, unsigned mergeMode,
+ VModInfo * info)
{
register int i, bit, nextFree;
ExprResult mod;
struct xkb_server_map * srv;
struct xkb_names * names;
- srv = info->xkb->server;
- names = info->xkb->names;
+ srv = xkb->server;
+ names = xkb->names;
for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
{
if (info->defined & bit)
}
Bool
-ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
+ResolveVirtualModifier(ExprDef * def, struct xkb_desc *xkb,
+ ExprResult * val_rtrn, VModInfo * info)
{
struct xkb_names * names;
- names = info->xkb->names;
+ names = xkb->names;
if (def->op == ExprIdent)
{
int i, bit;
);
extern Bool HandleVModDef(VModDef * /* stmt */ ,
+ struct xkb_desc * /* xkb */ ,
unsigned /* mergeMode */ ,
VModInfo * /* info */
);
);
extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
+ struct xkb_desc * /* xkb */ ,
ExprResult * /* value_rtrn */ ,
VModInfo * /* info */
);