package de.dhbwstuttgart.target.generate;

import de.dhbwstuttgart.syntaxtree.ClassOrInterface;
import de.dhbwstuttgart.syntaxtree.Method;
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
import de.dhbwstuttgart.target.tree.type.TargetType;
import de.dhbwstuttgart.typeinference.result.ResultSet;

import java.util.Set;

public interface IGenerics {

    Set<GenerateGenerics.Pair> generics(ClassOrInterface classOrInterface);

    Set<GenerateGenerics.Pair> generics(ClassOrInterface owner, Method method);

    RefTypeOrTPHOrWildcardOrGeneric getType(RefTypeOrTPHOrWildcardOrGeneric type);

    TypePlaceholder getEqualType(TypePlaceholder tph);

    TargetType getTargetType(RefTypeOrTPHOrWildcardOrGeneric in);

    ResultSet getResultSet();
}
