Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / models / dataConstraintModel / Variable.java
package models.dataConstraintModel;

import java.util.HashMap;

public class Variable extends Expression {
	private String name;
	
	public Variable(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}
	
	@Override
	public HashMap<Position, Variable> getVariables() {
		HashMap<Position, Variable> variables = new HashMap<>();
		variables.put(new Position(), this);
		return variables;
	}
	
	@Override
	public Expression getSubTerm(Position pos) {
		if (pos.isEmpty()) return this;
		return null;
	}
	
	@Override
	public Expression unify(Expression another) {
		return (Expression) another.clone();
	}

	@Override
	public Expression getInverseMap(Expression outputValue, Position targetPos) {
		if (targetPos.isEmpty()) return outputValue;
		return null;
	}

	@Override
	public boolean contains(Expression exp) {
		return equals(exp);
	}

	@Override
	public boolean equals(Object another) {
		if (!(another instanceof Variable)) return false;
		return name.equals(((Variable) another).name);
	}
	
	@Override
	public int hashCode() {
		return name.hashCode();
	}
	
	@Override
	public Object clone() {
		return new Variable(name);
	}
	
	public String toString() {
		return name;
	}
}