package net.sf.orcc.backends.c.dal; import net.sf.orcc.graph.Graph; import net.sf.orcc.graph.Vertex; /** * Class traverses a graph for * searching a predecessor with a specific name * * @author Jani Boutellier */ public class GraphTraverser { Graph graph; int distance; public GraphTraverser(Graph graph) { this.graph = graph; } private void searchPredecessor(Vertex v, String name, int dist) { if (v != null) { if (v.getLabel().equals(name)) { distance = dist; } if (v.getSuccessors().size() > 0) { for (Vertex p : v.getSuccessors()) { searchPredecessor(p, name, dist + 1); } } } } public int isPredecessor(String origin, String name) { distance = -1; for (Vertex v : graph.getVertices()) { if (v.getLabel().equals(origin)) { searchPredecessor(v, name, 0); return distance; } } return distance; } }