package models.terms.meta;

import lombok.Getter;
import models.algebra.Constant;
import models.algebra.Expression;
import models.algebra.Variable;

@Getter
public class MetaDependencyVariable extends MetaVariable {

	public MetaDependencyVariable(Variable variableName, OrderConstraint constraint, Expression order) {
		super(MetaRDLTerm.TermType.META_DEPENDENCY_VARIABLE, variableName, constraint, order);
	}
	
	public MetaDependencyVariable(Variable variableName) {
		super(MetaRDLTerm.TermType.META_DEPENDENCY_VARIABLE, variableName, OrderConstraint.ANY, new Constant("0"));
	}
	
	public MetaDependencyVariable(Variable variableName, Expression order) {
		super(MetaRDLTerm.TermType.META_DEPENDENCY_VARIABLE, variableName, OrderConstraint.EQ, order);
	}

	@Override
	public MetaDependencyVariable cloneWithName(String name) {
		return new MetaDependencyVariable(new Variable(name), constraint, orderExpression);
	}
	
}
