package de.dhbwstuttgart.syntaxtree.type;


import java.util.ArrayList;
import java.util.List;

/**
 * FunVoid<T1,...,TN> {
 * void apply(T1 arg1, ... TN argN);
 * }
 * @author A10023 - Andreas Stadelmeier
 * 
 */
public class FunVoidN extends FunN {
	
	private RefTypeOrTPHOrWildcardOrGeneric R;
	private List<RefTypeOrTPHOrWildcardOrGeneric> T;
	
	/**
	 * @author Andreas Stadelmeier,  a10023
	 * BenÃ¶tigt fÃ¼r den Typinferenzalgorithmus fÃ¼r Java 8
	 * Generiert einen RefType auf eine FunVoidN<T1,...,TN> - Klasse.
	 * @param T
	 * @return
	 */
	public FunVoidN(List<RefTypeOrTPHOrWildcardOrGeneric> T) {
		super(null,T);
	}
	


	/**
	 * Muss nach jeder Ãnderung von T oder R aufgerufen werden.
	 * Dabei werden bestimmte, von RefType geerbte, Parameter angepasst. Dies ist wichtig fÃ¼r den Typinferenzalgorithmus. 
	 */
	private void calculateNewParalist(){
		List<RefTypeOrTPHOrWildcardOrGeneric> t = new ArrayList<>();
		if(T!=null)t.addAll(T);
		this.parameter = t;
	}
	
}
