blob: ba969ed011892442d60bae1f84ddd994793bb506 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 2016 Willink Transformations and others.
* 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:
* E.D.Willink - Initial API and implementation
*******************************************************************************/
package org.eclipse.qvtd.compiler.internal.qvtp2qvts;
import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.Property;
public interface NavigableEdge extends Edge, ConnectionEnd
{
void addIncomingConnection(@NonNull EdgeConnection edgeConnection);
void addOutgoingConnection(@NonNull EdgeConnection edgeConnection);
/**
* Create an edgeRole edge from sourceNode to targetNode with the same property as this edge. * @param edgeRole
*/
@Override
@NonNull NavigableEdge createEdge(@NonNull EdgeRole edgeRole, @NonNull Node sourceNode, @NonNull Node targetNode);
@Override
@NonNull NavigableEdge getForwardEdge();
@Nullable EdgeConnection getIncomingConnection();
/**
* Return the other edge in a pair of bidirectionally to-one edges, or null if unidirectional.
*/
@Nullable NavigableEdge getOppositeEdge();
@NonNull List<@NonNull EdgeConnection> getOutgoingConnections();
/**
* Return the property that this edge navigates from source to target.
*/
@NonNull Property getProperty();
/**
* Return true if this edge has a non-zero target lower bound or if the target node isRequired.
*/
boolean isRequired();
void removeIncomingConnection(@NonNull EdgeConnection edgeConnection);
void removeOutgoingConnection(@NonNull EdgeConnection edgeConnection);
}