package models.terms;

import lombok.Getter;
import models.algebra.Symbol;
import models.algebra.Term;

@Getter
public abstract class RDLTerm extends Term {

	protected int order;
	protected int size;
	
	protected RDLTerm(Symbol symbol, int order, int size) {
		super(symbol);
		this.order = order;
		this.size = size;
	}
	
	public int getTermOrder() {
		return getOrder();
	}
	
	@Override
	public abstract String toString();
	
	public abstract String toStringWithOrder();
	
	public String toTermString() {
		return toString();
	}
	
	@Override
	public boolean equals(Object another) {
		return super.equals(another);
	}
	
	@Override
	public abstract int hashCode();
	
	@Override
	public abstract Object clone();

}
