package es.uniovi.reflection.patternmining.debug;

public class MethodDefinition extends Node {		
	public String methodVisibility;
	public boolean isDefaultImplementation;
	public boolean isFinal;
	public boolean hasOverride;
	public boolean isStatic;
	public boolean isAbstract;
	public boolean isConstructor;
	public boolean isStrictFP;
	public boolean isNative;
	public boolean isSynchronized;
	public int numberParameters;
	public int numberGenericTypes;
	public int numberThrows;
	public String returnType;
	public String firstParameterType;
	public String secondParameterType;
	public String thirdParameterType;
	public int numberAnnotations;
	public int numberStatements;
	public int methodLocalVars;
	public String locVarNaming;
	public String methodNaming;	
	public int numberInnerClasses;
	public int numberOfOverloaded;
	public long firstTypeParameterId = -1;
	public long secondTypeParameterId = -1;
	public long thirdTypeParameterId = -1;
	public long returnTypeParameterId = -1;
	public String sourceCode;
	
	public MethodDefinition(long id, String methodVisibility,
			boolean isDefaultImplementation, boolean isFinal, boolean hasOverride, boolean isStatic, boolean isAbstract,
			boolean isConstructor, boolean isStrictFP, boolean isNative, boolean isSynchronized, int numberParameters, 
			int numberGenericTypes, int numberThrows, String returnType, String firstParameterType, 
			String secondParameterType, String thirdParameterType, int numberAnnotations, int numberStatements, 
			int methodLocalVars, String locVarNaming, String methodNaming, int numberInnerClasses, int numberOfOverloaded,
			long firstTypeParameterId, long secondTypeParameterId, long thirdTypeParameterId,
			long returnTypeParameterId, String sourceCode) {
		this.id = id;		
		this.methodVisibility = methodVisibility;
		this.isDefaultImplementation = isDefaultImplementation;
		this.isFinal = isFinal;
		this.hasOverride = hasOverride;
		this.isStatic = isStatic;
		this.isAbstract = isAbstract;
		this.isConstructor = isConstructor;
		this.isStrictFP = isStrictFP;
		this.isNative = isNative;
		this.isSynchronized = isSynchronized;
		this.numberParameters = numberParameters;
		this.numberGenericTypes = numberGenericTypes;
		this.numberThrows = numberThrows;
		this.returnType = returnType;
		this.firstParameterType = firstParameterType;
		this.secondParameterType = secondParameterType;
		this.thirdParameterType = thirdParameterType;
		this.numberAnnotations = numberAnnotations;
		this.numberStatements = numberStatements;
		this.methodLocalVars = methodLocalVars;
		this.locVarNaming = locVarNaming;
		this.methodNaming = methodNaming;
		this.numberInnerClasses = numberInnerClasses;
		this.numberOfOverloaded = numberOfOverloaded;
		this.firstTypeParameterId = firstTypeParameterId;
		this.secondTypeParameterId = secondTypeParameterId;
		this.thirdTypeParameterId = thirdTypeParameterId;
		this.returnTypeParameterId = returnTypeParameterId;
		this.sourceCode = sourceCode;
	}
		
}

