/*******************************************************************************
 * Copyright (c) 2004-2008 Akos Horvath, Gergely Varro and Daniel Varro
 * 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
 *
 * Contributors:
 *    Akos Horvath, Gergely Varro - initial API and implementation
 *******************************************************************************/

 package org.eclipse.viatra2.gtasm.patternmatcher.impl.gtmatcher.internal.operation;

import org.eclipse.viatra2.core.IModelManager;

/**
 * @author Akos Horvath
 *
 */
public abstract class MoveElement extends ElementManipulationOperation {

	protected IModelManager manager;
	protected int variableIndex;
	
	protected MoveElement(IModelManager manager, int variable){
		this.manager= manager;
		this.variableIndex = variable;
	}

	/**
	 * @return the variable
	 */
	public int getVariableIndex() {
		return variableIndex;
	}
	
}
