.common = { .type = STMT_EXPR, .next = NULL },
.op = EXPR_VALUE,
.value_type = EXPR_TYPE_BOOLEAN,
- .value = { .ival = 1 },
+ .value = { .set = true },
};
static const ExprDef constFalse = {
.common = { .type = STMT_EXPR, .next = NULL },
.op = EXPR_VALUE,
.value_type = EXPR_TYPE_BOOLEAN,
- .value = { .ival = 0 },
+ .value = { .set = false },
};
enum action_field {
}
ExprDef *
+ExprCreateBoolean(bool set)
+{
+ ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_BOOLEAN);
+ if (!expr)
+ return NULL;
+
+ expr->value.set = set;
+
+ return expr;
+}
+
+ExprDef *
ExprCreateKeyName(xkb_atom_t key_name)
{
ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_KEYNAME);
}
VarDef *
-BoolVarCreate(xkb_atom_t nameToken, unsigned set)
+BoolVarCreate(xkb_atom_t ident, bool set)
{
- ExprDef *name, *value;
- VarDef *def;
-
- name = ExprCreate(EXPR_IDENT, EXPR_TYPE_UNKNOWN);
- name->value.ident = nameToken;
- value = ExprCreate(EXPR_VALUE, EXPR_TYPE_BOOLEAN);
- value->value.uval = set;
- def = VarCreate(name, value);
-
- return def;
+ return VarCreate(ExprCreateIdent(ident),
+ ExprCreateBoolean(set));
}
InterpDef *
ExprCreateInteger(int ival);
ExprDef *
+ExprCreateBoolean(bool set);
+
+ExprDef *
ExprCreateKeyName(xkb_atom_t key_name);
ExprDef *
VarCreate(ExprDef *name, ExprDef *value);
VarDef *
-BoolVarCreate(xkb_atom_t nameToken, unsigned set);
+BoolVarCreate(xkb_atom_t ident, bool set);
InterpDef *
InterpCreate(xkb_keysym_t sym, ExprDef *match);
struct _Expr *child;
xkb_atom_t ident;
xkb_atom_t str;
- unsigned uval;
+ bool set;
int ival;
xkb_atom_t keyName;
} value;
expr_value_type_to_string(expr->value_type));
return false;
}
- *set_rtrn = !!expr->value.ival;
+ *set_rtrn = expr->value.set;
return true;
case EXPR_IDENT:
return false;
}
- *kc = expr->value.uval;
+ *kc = (xkb_keycode_t) expr->value.ival;
return true;
case EXPR_ADD:
VarDecl : Lhs EQUALS Expr SEMI
{ $$ = VarCreate($1, $3); }
| Ident SEMI
- { $$ = BoolVarCreate($1, 1); }
+ { $$ = BoolVarCreate($1, true); }
| EXCLAM Ident SEMI
- { $$ = BoolVarCreate($2, 0); }
+ { $$ = BoolVarCreate($2, false); }
;
KeyNameDecl : KEYNAME EQUALS KeyCode SEMI
SymbolsVarDecl : Lhs EQUALS Expr { $$ = VarCreate($1, $3); }
| Lhs EQUALS ArrayInit { $$ = VarCreate($1, $3); }
- | Ident { $$ = BoolVarCreate($1, 1); }
- | EXCLAM Ident { $$ = BoolVarCreate($2, 0); }
+ | Ident { $$ = BoolVarCreate($1, true); }
+ | EXCLAM Ident { $$ = BoolVarCreate($2, false); }
| ArrayInit { $$ = VarCreate(NULL, $1); }
;