/** * <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.interpreter.impl.InterpreterFactoryImpl; import org.eclipse.emf.henshin.model.Rule; import org.eclipse.emf.henshin.model.Unit; /** * Interface for the interpreter factory. * * @author Christian Krause */ public interface InterpreterFactory { /** * Static factory instance. */ final static InterpreterFactory INSTANCE = new InterpreterFactoryImpl(); /** * Create a new {@link EGraph} object. * @return A new {@link EGraph}. */ EGraph createEGraph(); /** * Create an {@link Assignment} object. * @param unit Target {@link Unit}. * @param isResultAssignment Determines whether this is a result assignment. * @return A new {@link Assignment}. */ Assignment createAssignment(Unit unit, boolean isResultAssignment); /** * Create a {@link Match}. * @param Rule to be matched. * @param isResultMatch Determines whether this is a result match. * @return A new {@link Match}. */ Match createMatch(Rule rule, boolean isResultMatch); /** * Create an {@link Engine} object. * @return A new {@link Engine}. */ Engine createEngine(); /** * Create a new {@link UnitApplication}. * @param engine {@link Engine} to be used. * @return A new {@link UnitApplication}. */ UnitApplication createUnitApplication(Engine engine); /** * Create a new {@link RuleApplication}. * @param engine {@link Engine} to be used. * @return A new {@link RuleApplication}. */ RuleApplication createRuleApplication(Engine engine); /** * Create an {@link ApplicationMonitor}. * @return A new {@link ApplicationMonitor}. */ ApplicationMonitor createApplicationMonitor(); }