Type.java

package edu.udel.cis.vsl.tass.model.impl.type;

import java.util.LinkedHashSet;
import java.util.Set;

import edu.udel.cis.vsl.tass.model.IF.type.TypeIF;

public abstract class Type implements TypeIF {

	TypeKind kind;

	private int id = -1;

	public Type(TypeKind kind) {
		this.kind = kind;
	}

	public TypeKind kind() {
		return kind;
	}

	abstract public String longName(Set<Type> stack);

	public String longName() {
		return longName(new LinkedHashSet<Type>());
	}

	public String toString() {
		return longName();
	}

	public void setId(int id) {
		this.id = id;
	}

	public int id() {
		return id;
	}

}