diff --git a/ChangeLog b/ChangeLog index deb0fd9..2b65703 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Tue Feb 12 00:35:37 2008 Minero Aoki + + * net/loveruby/cflat/type/TypeTable.java: remove deftype methods, + use #put instead. + + * net/loveruby/cflat/ast/StructNode.java: define type by myself, + calling TypeTable#put directly. + + * net/loveruby/cflat/ast/UnionNode.java: ditto. + + * net/loveruby/cflat/ast/TypedefNode.java: ditto. + Tue Feb 12 00:26:23 2008 Minero Aoki * net/loveruby/cflat/compiler/TypeResolver.java: resolving diff --git a/net/loveruby/cflat/ast/StructNode.java b/net/loveruby/cflat/ast/StructNode.java index 57f0d2e..0d78620 100644 --- a/net/loveruby/cflat/ast/StructNode.java +++ b/net/loveruby/cflat/ast/StructNode.java @@ -15,9 +15,12 @@ public class StructNode extends ComplexTypeDefinition { return true; } + // #@@range/defineIn{ public void defineIn(TypeTable table) { - table.defineStruct(this); + Type type = new StructType(name(), members(), location()); + table.put(typeRef(), type); } + // #@@} public void accept(ASTVisitor visitor) { visitor.visit(this); diff --git a/net/loveruby/cflat/ast/TypedefNode.java b/net/loveruby/cflat/ast/TypedefNode.java index daefed3..00b740e 100644 --- a/net/loveruby/cflat/ast/TypedefNode.java +++ b/net/loveruby/cflat/ast/TypedefNode.java @@ -25,9 +25,12 @@ public class TypedefNode extends TypeDefinition { return real.typeRef(); } + // #@@range/defineIn{ public void defineIn(TypeTable table) { - table.defineUserType(this); + Type type = new UserType(name(), realTypeNode(), location()); + table.put(typeRef(), type); } + // #@@} protected void _dump(Dumper d) { d.printMember("name", name); diff --git a/net/loveruby/cflat/ast/UnionNode.java b/net/loveruby/cflat/ast/UnionNode.java index 9a0a51e..7ca706f 100644 --- a/net/loveruby/cflat/ast/UnionNode.java +++ b/net/loveruby/cflat/ast/UnionNode.java @@ -15,9 +15,12 @@ public class UnionNode extends ComplexTypeDefinition { return true; } + // #@@range/defineIn{ public void defineIn(TypeTable table) { - table.defineUnion(this); + Type type = new UnionType(name(), members(), location()); + table.put(typeRef(), type); } + // #@@} public void accept(ASTVisitor visitor) { visitor.visit(this); diff --git a/net/loveruby/cflat/type/TypeTable.java b/net/loveruby/cflat/type/TypeTable.java index 0e95ce4..5af1bb6 100644 --- a/net/loveruby/cflat/type/TypeTable.java +++ b/net/loveruby/cflat/type/TypeTable.java @@ -123,27 +123,6 @@ public class TypeTable { t.defineIn(this); } - public void defineStruct(StructNode node) { - Type type = new StructType(node.name(), - node.members(), - node.location()); - table.put(node.typeRef(), type); - } - - public void defineUnion(UnionNode node) { - Type type = new UnionType(node.name(), - node.members(), - node.location()); - table.put(node.typeRef(), type); - } - - public void defineUserType(TypedefNode node) { - Type type = new UserType(node.name(), - node.realTypeNode(), - node.location()); - table.put(node.typeRef(), type); - } - public PointerType pointerTo(Type baseType) { return new PointerType(pointerSize, baseType); }