package models.algebra;

import java.util.ArrayList;

/**
 * A field in the implementation (regarded as a constant in the algebraic system)
 * @author Nitta
 *
 */
public class Field extends Constant {

	public Field(String name) {
		super(name);
	}
	
	public Field(String name, Type type) {
		super(name, type);
	}
	
	public Field(Symbol symbol) {
		super(symbol);
	}
	
	public Type getType() {
		if (symbol.getSignature().length >= 1) {
			return symbol.getSignature()[0];
		}
		return null;
	}

	@Override
	public boolean equals(Object another) {
		if (!(another instanceof Field)) return false;
		return symbol.equals(((Field) another).symbol);
	}
	
	@Override
	public Object clone() {
		return new Field(symbol);
	}
	
	public String toImplementation(String[] sideEffects) {
		return "this." + super.toImplementation(sideEffects);
	}
}
