package leigh.mecha.nodegraph;

import leigh.eo.EO;
import leigh.eo.EOLoop;
import leigh.mecha.lang.ValueTypeMismatchException;

import java.io.Serializable;

public interface Attribute {
    /**
     * Return a single value for this attribute, if possible. If this is not possible,
     * a {@link ValueTypeMismatchException} is thrown.
     */
    Serializable getSingleValue(ProcessorState state) throws Exception;

    EO getObjectValue(ProcessorState state) throws Exception;

    EOLoop getObjectsValue(ProcessorState state) throws Exception;
}