union {
struct {
/* EXPR_SYMBOL */
- const struct datatype *sym_type;
const struct scope *scope;
const char *identifier;
};
const struct datatype *dtype)
{
if (expr->ops->type == EXPR_SYMBOL)
- expr->sym_type = dtype;
+ expr->dtype = dtype;
}
extern struct expr *constant_expr_alloc(const struct location *loc,
struct error_record *symbol_parse(const struct expr *sym,
struct expr **res)
{
- const struct datatype *dtype = sym->sym_type;
+ const struct datatype *dtype = sym->dtype;
assert(sym->ops->type == EXPR_SYMBOL);
return error(&sym->location,
"Can't parse symbolic %s expressions",
- sym->sym_type->desc);
+ sym->dtype->desc);
}
struct error_record *symbolic_constant_parse(const struct expr *sym,
break;
}
- dtype = sym->sym_type;
+ dtype = sym->dtype;
if (s->identifier == NULL)
return error(&sym->location, "Could not parse %s", dtype->desc);
mpz_init(v);
if (gmp_sscanf(sym->identifier, "%Zu", v) != 1) {
mpz_clear(v);
- if (sym->sym_type != &integer_type)
+ if (sym->dtype != &integer_type)
return NULL;
return error(&sym->location, "Could not parse %s",
- sym->sym_type->desc);
+ sym->dtype->desc);
}
- *res = constant_expr_alloc(&sym->location, sym->sym_type,
+ *res = constant_expr_alloc(&sym->location, sym->dtype,
BYTEORDER_HOST_ENDIAN, 1, NULL);
mpz_set((*res)->value, v);
mpz_clear(v);
struct symbol *sym;
struct expr *new;
- (*expr)->sym_type = ctx->ectx.dtype;
+ (*expr)->dtype = ctx->ectx.dtype;
if ((*expr)->scope != NULL) {
sym = symbol_lookup((*expr)->scope, (*expr)->identifier);
static void symbol_expr_clone(struct expr *new, const struct expr *expr)
{
- new->sym_type = expr->sym_type;
new->scope = expr->scope;
new->identifier = xstrdup(expr->identifier);
}
if (rtnl_tc_str2handle(sym->identifier, &handle) < 0)
return error(&sym->location, "Could not parse %s",
- sym->sym_type->desc);
+ sym->dtype->desc);
- *res = constant_expr_alloc(&sym->location, sym->sym_type,
+ *res = constant_expr_alloc(&sym->location, sym->dtype,
BYTEORDER_HOST_ENDIAN,
sizeof(handle) * BITS_PER_BYTE, &handle);
return NULL;
if (ifindex == 0)
return error(&sym->location, "Interface does not exist");
- *res = constant_expr_alloc(&sym->location, sym->sym_type,
+ *res = constant_expr_alloc(&sym->location, sym->dtype,
BYTEORDER_HOST_ENDIAN,
sizeof(ifindex) * BITS_PER_BYTE, &ifindex);
return NULL;
if (pw == NULL)
return error(&sym->location, "User does not exist");
- *res = constant_expr_alloc(&sym->location, sym->sym_type,
+ *res = constant_expr_alloc(&sym->location, sym->dtype,
BYTEORDER_HOST_ENDIAN,
sizeof(pw->pw_uid) * BITS_PER_BYTE,
&pw->pw_uid);
if (gr == NULL)
return error(&sym->location, "Group does not exist");
- *res = constant_expr_alloc(&sym->location, sym->sym_type,
+ *res = constant_expr_alloc(&sym->location, sym->dtype,
BYTEORDER_HOST_ENDIAN,
sizeof(gr->gr_gid) * BITS_PER_BYTE,
&gr->gr_gid);