blob: 9211b44901b0c1f7aa0b6a82430adcd840ccdef3 [file] [log] [blame]
/**
* <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 org.eclipse.emf.henshin.model.Rule;
/**
* Interface for {@link Rule} applications.
* Rule applications are reusable. To reuse an instance
* you must invoke {@link #setPartialMatch(Match)} or
* {@link #setCompleteMatch(Match)} or {@link #setRule(Rule)}
* before every execution.
*
* @author Enrico Biermann, Christian Krause
*/
public interface RuleApplication extends UnitApplication {
/**
* Get the rule to be applied.
* @return The rule to be applied.
*/
Rule getRule();
/**
* Set the rule to be applied.
* @param rule The rule to be applied.
*/
void setRule(Rule rule);
/**
* Get the partial match to be used.
* @return The partial match.
*/
Match getPartialMatch();
/**
* Set the partial match to be used.
* @param partialMatch The partial match (can be <code>null</code>).
*/
void setPartialMatch(Match partialMatch);
/**
* Get the complete match to be used.
* @return The complete match.
*/
Match getCompleteMatch();
/**
* Set the complete match to be used. If it is set to <code>null</code>,
* the complete match will be derived from the partial match.
* @param completeMatch The complete match (can be <code>null</code>).
*/
void setCompleteMatch(Match completeMatch);
/**
* Get the match for the result of the transformation (after the unit has been applied).
* @return The match for the result.
*/
Match getResultMatch();
}