Skip to content
Arc.java 925 B
Newer Older
Javier Costa's avatar
Javier Costa committed
package tfm.arcs;
Javier Costa's avatar
Javier Costa committed

Javier Costa's avatar
Javier Costa committed
import tfm.arcs.data.ArcData;
Javier Costa's avatar
Javier Costa committed
import tfm.nodes.Node;
Javier Costa's avatar
Javier Costa committed

public abstract class Arc<D extends ArcData> extends edg.graphlib.Arrow<String, D> {

    @SuppressWarnings("unchecked")
Javier Costa's avatar
Javier Costa committed
    public Arc(Node from, Node to) {
Javier Costa's avatar
Javier Costa committed
        super((edg.graphlib.Vertex<String, D>) from, (edg.graphlib.Vertex<String, D>) to);
    }

    public abstract boolean isControlFlowArrow();

    public abstract boolean isControlDependencyArrow();

    public abstract boolean isDataDependencyArrow();

    @Override
    public String toString() {
        return String.format("Arc{data: %s, %s -> %s}",
                getData(),
                getFrom(),
                getTo()
        );
    }

    public String toGraphvizRepresentation() {
Javier Costa's avatar
Javier Costa committed
        Node from = (Node) getFrom();
        Node to = (Node) getTo();
Javier Costa's avatar
Javier Costa committed
        return String.format("%s -> %s",
                from.getId(),
                to.getId()
        );
Javier Costa's avatar
Javier Costa committed
    }
}