X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=write_fluffy.c;h=5379aee2de6901fc7793ba401a2154669b6cbb31;hb=03955def1ca0b6eb328351ae011249d27741aac5;hp=a313ed0157090080b20e0197ef3f2f1c8a097ff8;hpb=1868e5780d94ac2ba7e49a72c82b5b66e91a0926;p=cparser diff --git a/write_fluffy.c b/write_fluffy.c index a313ed0..5379aee 100644 --- a/write_fluffy.c +++ b/write_fluffy.c @@ -1,9 +1,29 @@ +/* + * This file is part of cparser. + * Copyright (C) 2007-2008 Matthias Braun + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ #include #include #include #include "write_fluffy.h" +#include "symbol_t.h" #include "ast_t.h" #include "type_t.h" #include "type.h" @@ -157,6 +177,8 @@ static void write_type(const type_t *type) case TYPE_INVALID: panic("invalid type found"); break; + case TYPE_COMPLEX: + case TYPE_IMAGINARY: default: fprintf(out, "/* TODO type */"); break; @@ -200,7 +222,7 @@ static void write_expression(const expression_t *expression); static void write_unary_expression(const unary_expression_t *expression) { - switch(expression->expression.kind) { + switch(expression->base.kind) { case EXPR_UNARY_NEGATE: fputc('-', out); break; @@ -220,7 +242,7 @@ static void write_expression(const expression_t *expression) switch(expression->kind) { case EXPR_CONST: constant = &expression->conste; - if(is_type_integer(expression->base.datatype)) { + if(is_type_integer(expression->base.type)) { fprintf(out, "%lld", constant->v.int_value); } else { fprintf(out, "%Lf", constant->v.float_value); @@ -312,6 +334,7 @@ void write_fluffy_decls(FILE *output, const translation_unit_t *unit) global_scope = &unit->scope; ast_set_output(out); + type_set_output(out); fprintf(out, "/* WARNING: Automatically generated file */\n"); /* write structs,unions + enums */