From 414fa58ae9f283c35c8510fc31f28ba77bb5fdf5 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Wed, 1 Apr 2009 12:56:44 +0200 Subject: expressions: kill seperate sym_type datatype for symbols Signed-off-by: Patrick McHardy --- include/expression.h | 3 +-- src/datatype.c | 12 ++++++------ src/evaluate.c | 2 +- src/expression.c | 1 - src/meta.c | 10 +++++----- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/include/expression.h b/include/expression.h index b0084c07..471033e7 100644 --- a/include/expression.h +++ b/include/expression.h @@ -174,7 +174,6 @@ struct expr { union { struct { /* EXPR_SYMBOL */ - const struct datatype *sym_type; const struct scope *scope; const char *identifier; }; @@ -292,7 +291,7 @@ static inline void symbol_expr_set_type(struct expr *expr, 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, diff --git a/src/datatype.c b/src/datatype.c index fece6049..589a3528 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -79,7 +79,7 @@ void datatype_print(const struct expr *expr) 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); @@ -92,7 +92,7 @@ struct error_record *symbol_parse(const struct expr *sym, 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, @@ -107,7 +107,7 @@ 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); @@ -219,13 +219,13 @@ static struct error_record *integer_type_parse(const struct expr *sym, 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); diff --git a/src/evaluate.c b/src/evaluate.c index c8625bbc..ed3c688c 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -105,7 +105,7 @@ static int expr_evaluate_symbol(struct eval_ctx *ctx, struct expr **expr) 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); diff --git a/src/expression.c b/src/expression.c index 74579dd2..d854eb29 100644 --- a/src/expression.c +++ b/src/expression.c @@ -188,7 +188,6 @@ static void symbol_expr_print(const struct expr *expr) 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); } diff --git a/src/meta.c b/src/meta.c index c5168248..d1fb791c 100644 --- a/src/meta.c +++ b/src/meta.c @@ -77,9 +77,9 @@ static struct error_record *tchandle_type_parse(const struct expr *sym, 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; @@ -153,7 +153,7 @@ static struct error_record *ifindex_type_parse(const struct expr *sym, 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; @@ -222,7 +222,7 @@ static struct error_record *uid_type_parse(const struct expr *sym, 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); @@ -263,7 +263,7 @@ static struct error_record *gid_type_parse(const struct expr *sym, 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); -- cgit v1.2.3