* 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.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3896 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
Minero Aoki 2008-02-11 15:35:40 +00:00
parent d3cbcbacf4
commit 52733c96b8
5 changed files with 24 additions and 24 deletions

View File

@ -1,3 +1,15 @@
Tue Feb 12 00:35:37 2008 Minero Aoki <aamine@loveruby.net>
* 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 <aamine@loveruby.net> Tue Feb 12 00:26:23 2008 Minero Aoki <aamine@loveruby.net>
* net/loveruby/cflat/compiler/TypeResolver.java: resolving * net/loveruby/cflat/compiler/TypeResolver.java: resolving

View File

@ -15,9 +15,12 @@ public class StructNode extends ComplexTypeDefinition {
return true; return true;
} }
// #@@range/defineIn{
public void defineIn(TypeTable table) { public void defineIn(TypeTable table) {
table.defineStruct(this); Type type = new StructType(name(), members(), location());
table.put(typeRef(), type);
} }
// #@@}
public void accept(ASTVisitor visitor) { public void accept(ASTVisitor visitor) {
visitor.visit(this); visitor.visit(this);

View File

@ -25,9 +25,12 @@ public class TypedefNode extends TypeDefinition {
return real.typeRef(); return real.typeRef();
} }
// #@@range/defineIn{
public void defineIn(TypeTable table) { public void defineIn(TypeTable table) {
table.defineUserType(this); Type type = new UserType(name(), realTypeNode(), location());
table.put(typeRef(), type);
} }
// #@@}
protected void _dump(Dumper d) { protected void _dump(Dumper d) {
d.printMember("name", name); d.printMember("name", name);

View File

@ -15,9 +15,12 @@ public class UnionNode extends ComplexTypeDefinition {
return true; return true;
} }
// #@@range/defineIn{
public void defineIn(TypeTable table) { public void defineIn(TypeTable table) {
table.defineUnion(this); Type type = new UnionType(name(), members(), location());
table.put(typeRef(), type);
} }
// #@@}
public void accept(ASTVisitor visitor) { public void accept(ASTVisitor visitor) {
visitor.visit(this); visitor.visit(this);

View File

@ -123,27 +123,6 @@ public class TypeTable {
t.defineIn(this); 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) { public PointerType pointerTo(Type baseType) {
return new PointerType(pointerSize, baseType); return new PointerType(pointerSize, baseType);
} }