#include <errno.h>
#include <string.h>
+#include "write_fluffy.h"
#include "ast_t.h"
#include "type_t.h"
#include "type.h"
case EXPR_CONST:
constant = (const const_t*) expression;
if(is_type_integer(expression->datatype)) {
- fprintf(out, "%d", constant->v.int_value);
+ fprintf(out, "%lld", constant->v.int_value);
} else {
fprintf(out, "%Lf", constant->v.float_value);
}
}
}
-static void write_initializer(const initializer_t *initializer)
-{
- if(initializer->type != INITIALIZER_VALUE) {
- panic("list initializers not supported yet");
- }
-
- write_expression(initializer->v.value);
-}
-
static void write_enum(const symbol_t *symbol, const enum_type_t *type)
{
fprintf(out, "enum %s:\n", symbol->string);
- declaration_t *entry = type->declaration->context_next;
+ declaration_t *entry = type->declaration->next;
for ( ; entry != NULL && entry->storage_class == STORAGE_CLASS_ENUM_ENTRY;
entry = entry->next) {
fprintf(out, "\t%s", entry->symbol->string);
if(entry->init.initializer != NULL) {
fprintf(out, " <- ");
- write_initializer(entry->init.initializer);
+ write_expression(entry->init.enum_value);
}
fputc('\n', out);
}
/* write global variables */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
+ if(declaration->namespc != NAMESPACE_NORMAL)
+ continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;
/* write functions */
declaration = unit->context.declarations;
for( ; declaration != NULL; declaration = declaration->next) {
+ if(declaration->namespc != NAMESPACE_NORMAL)
+ continue;
if(declaration->storage_class == STORAGE_CLASS_TYPEDEF
|| declaration->storage_class == STORAGE_CLASS_ENUM_ENTRY)
continue;