/*******************************************************************************
 * 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.IModelElement;
import org.eclipse.viatra2.core.IModelManager;
import org.eclipse.viatra2.gtasm.patternmatcher.impl.gtmatcher.exceptions.GTOperationException;
import org.eclipse.viatra2.gtasm.patternmatcher.impl.patternmatcher.internal.MatchingFrame;

/**
 * @author Akos Horvath
 *
 */
public abstract class DeleteRelationShip extends DeleteElement {

	
	IModelElement target, source; 
	
	public DeleteRelationShip(IModelManager manager, IModelElement s,IModelElement t ) {
		super(manager, 0);
		target = t;
		source = s;
	}

	@Override
	protected boolean delete(MatchingFrame frame) throws GTOperationException {
		return false;
	}

	

}
