JavaPatternMatching/src/de/dhbwstuttgart/syntaxtree/ClassOrInterface.java

81 lines
2.4 KiB
Java
Raw Normal View History

2014-09-02 08:33:54 +00:00
package de.dhbwstuttgart.syntaxtree;
2015-10-23 14:22:44 +00:00
2014-09-02 08:33:54 +00:00
import de.dhbwstuttgart.core.IItemWithOffset;
2016-12-15 14:45:23 +00:00
import de.dhbwstuttgart.typecheck.JavaClassName;
import de.dhbwstuttgart.syntaxtree.modifier.Modifiers;
2017-02-10 16:37:42 +00:00
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPH;
2017-03-06 16:59:01 +00:00
import de.dhbwstuttgart.typeinference.ConstraintSet;
import de.dhbwstuttgart.typeinference.Pair;
import de.dhbwstuttgart.typeinference.TypeInferenceInformation;
import org.antlr.v4.runtime.Token;
2013-10-18 11:33:46 +00:00
2016-12-07 13:32:48 +00:00
import java.util.ArrayList;
2017-03-06 16:59:01 +00:00
import java.util.Collection;
2016-12-07 13:32:48 +00:00
import java.util.List;
/**
* Stellt jede Art von Klasse dar. Auch abstrakte Klassen und Interfaces
*/
public class ClassOrInterface extends GTVDeclarationContext implements IItemWithOffset, Generic{
protected Modifiers modifiers;
protected JavaClassName name;
2017-03-06 16:59:01 +00:00
private List<Field> fields = new ArrayList<>();
private List<Method> methods = new ArrayList<>();
private GenericDeclarationList genericClassParameters;
private Token offset;
2017-02-10 16:37:42 +00:00
private RefTypeOrTPH superClass;
protected boolean isInterface;
2017-02-10 16:37:42 +00:00
private List<RefTypeOrTPH> implementedInterfaces;
2017-03-06 16:59:01 +00:00
public ClassOrInterface(Modifiers modifiers, JavaClassName name, List<Field> fielddecl, List<Method> methods, GenericDeclarationList genericClassParameters,
2017-02-10 16:37:42 +00:00
RefTypeOrTPH superClass, Boolean isInterface, List<RefTypeOrTPH> implementedInterfaces, Token offset){
2017-03-02 17:16:14 +00:00
super(offset);
if(modifiers != null){
this.modifiers = modifiers;
}
if(name != null){
this.name = name;
}
if(fielddecl != null){
2017-03-06 16:59:01 +00:00
this.fields = fielddecl;
}
if(genericClassParameters != null){
this.genericClassParameters = genericClassParameters;
}
this.offset = offset;
if(superClass != null){
this.superClass = superClass;
}
this.isInterface = isInterface;
if(implementedInterfaces != null){
this.implementedInterfaces = implementedInterfaces;
}
2017-03-06 16:59:01 +00:00
this.methods = methods;
}
// Gets class name
public JavaClassName getClassName(){
return this.name;
}
// Get modifiers
public Modifiers getModifiers(){
return this.modifiers;
}
2017-03-06 16:59:01 +00:00
public List<Field> getFieldDecl(){
2017-03-06 16:59:01 +00:00
return this.fields;
}
public List<Method> getMethods(){
return this.methods;
}
2017-01-11 15:42:02 +00:00
2017-03-06 16:59:01 +00:00
public ConstraintSet getConstraints(TypeInferenceInformation info) {
ConstraintSet ret = new ConstraintSet();
for(Method m : this.getMethods()){
m.getConstraints(info);
}
return ret;
}
2013-10-18 11:33:46 +00:00
}