Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / models / algebra / Symbol.java
package models.algebra;

public class Symbol {
	private String name;
	private int arity = 0;
	private Type operatorType = Type.PREFIX;
	private Symbol inverses[] = null;
	
	public Symbol(String name) {
		this.name = name;
		this.arity = 0;
	}
	
	public Symbol(String name, int arity) {
		this.name = name;
		this.arity = arity;
	}
	
	public Symbol(String name, int arity, Type operatorType) {
		this.name = name;
		this.arity = arity;
		this.operatorType = operatorType;
	}
	
	public void setArity(int arity) {
		this.arity = arity;
	}

	public int getArity() {
		return arity;
	}

	public String getName() {
		return name;
	}
	
	public boolean isInfix() {
		return (operatorType == Type.INFIX);
	}
	
	public boolean isMethod() {
		return (operatorType == Type.METHOD);
	}

	public Symbol[] getInverses() {
		return inverses;
	}

	public void setInverses(Symbol[] inverses) {
		this.inverses = inverses;
	}

	public boolean equals(Object another) {
		if (!(another instanceof Symbol)) return false;
		return name.equals(((Symbol) another).name) && arity == ((Symbol) another).arity;
	}
	
	@Override
	public int hashCode() {
		return name.hashCode();
	}
	
	public String toString() {
		return name;
	}
	
	public enum Type {
		PREFIX,
		INFIX,
		METHOD
	}
}