/**
* <copyright>
* Copyright (c) 2010-2014 Henshin developers. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* </copyright>
*/
package org.eclipse.emf.henshin.interpreter;
import java.util.List;
import org.eclipse.emf.henshin.model.Parameter;
import org.eclipse.emf.henshin.model.Unit;
/**
* Interface for parameter assignments. Used for storing parameter values.
*
* @author Christian Krause
*/
public interface Assignment {
/**
* Get the unit that this assignment refers to.
* @return The unit.
*/
Unit getUnit();
/**
* Get the value assigned to a parameter.
* @param param The parameter.
* @return The assigned value or <code>null</code>.
*/
Object getParameterValue(Parameter param);
/**
* Set the assigned value for a parameter.
* @param param The parameter.
* @param value The value to be assigned with the parameter.
*/
void setParameterValue(Parameter param, Object value);
/**
* Get all parameter values.
* @return List of all parameter values.
*/
List<Object> getParameterValues();
/**
* Check whether this assignment is empty.
* @return <code>true</code> of no values are assigned.
*/
boolean isEmpty();
/**
* Clear all values stored in this assignment.
*/
void clear();
/**
* Checks whether this is an assignment for a result of a unit application.
* @return <code>true</code> if it is a result assignment.
*/
boolean isResult();
}