From c28a1cc9d206bdde41a621b018c01980b3c8a617 Mon Sep 17 00:00:00 2001 From: bd-912 Date: Thu, 25 Apr 2024 12:58:10 -0600 Subject: Rewrote Symbol Table to be more context aware and avoid collisions --- st/TypeInstance.java | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'st/TypeInstance.java') diff --git a/st/TypeInstance.java b/st/TypeInstance.java index 88b73f3..e43c5b3 100644 --- a/st/TypeInstance.java +++ b/st/TypeInstance.java @@ -2,8 +2,23 @@ package st; public class TypeInstance extends AbstractInstance { - public TypeInstance(String name, TypeEnum type) { + protected ClassInstance par_cls; // the surrounding class + protected MethodInstance par_mtd; // the surrounding method + protected ClassInstance cls; // the class instance + + + public TypeInstance(String name, TypeEnum type, MethodInstance par_mtd, ClassInstance par_cls) { super(name, type); + this.par_cls = par_cls; + this.par_mtd = par_mtd; + } + + @Override public boolean equals(Object other) { + TypeInstance o; + return (other instanceof TypeInstance && + ((o = (TypeInstance) other).getName() == this.getName() && + o.getParentClass() == this.getParentClass() && + o.getParentMethod() == this.getParentMethod())); } public int getSize() { @@ -30,4 +45,28 @@ public class TypeInstance extends AbstractInstance { return type != TypeEnum.ERROR; } + public void addClassInstance(ClassInstance cls) { + this.cls = cls; + } + + public ClassInstance getClassInstance() { + return this.cls; + } + + public void addParentClass(ClassInstance par_cls) { + this.par_cls = par_cls; + } + + public ClassInstance getParentClass() { + return this.par_cls; + } + + public void addParentMethod(MethodInstance par_mtd) { + this.par_mtd = par_mtd; + } + + public MethodInstance getParentMethod() { + return this.par_mtd; + } + } -- cgit v1.2.3