package com.plectix.simulator.staticanalysis.graphs;
import java.util.LinkedList;
import java.util.List;
public class Vertex {
private final LinkedList<Edge> edges;
private final LinkedList<Vertex> neighbourVertices = new LinkedList<Vertex>();
private Vertex parentVertex;
private boolean tag = false;
//TODO appropriate names!!
private int explored = 0;
private boolean mark2;
public Vertex() {
edges = new LinkedList<Edge>();
setExplored(0);
setMark2(false);
}
public final void setTag(boolean tag) {
this.tag = tag;
}
public final boolean isTag() {
return tag;
}
public final Vertex next() {
while (getExplored() < edges.size()) {
if (edges.get(getExplored()).getTarget() != this) {
setExplored(getExplored() + 1);
return edges.get(getExplored() - 1).getTarget();
}else
{
setExplored(getExplored() + 1);
}
}
setExplored(0);
return null;
}
public final void setParentVertex(Vertex parentVertex) {
this.parentVertex = parentVertex;
}
public final Vertex getParentVertex() {
return this.parentVertex;
}
public final void setMark2(boolean mark2) {
this.mark2 = mark2;
}
public final boolean isMark2() {
return mark2;
}
public final void removeEdge(Edge edge) {
edges.remove(edge);
}
public final void addEdge(Edge edge) {
edges.add(edge);
}
public final void clearEdges() {
edges.clear();
}
public final void setExplored(int explored) {
this.explored = explored;
}
final int getExplored() {
return explored;
}
public final List<Edge> getEdges() {
return edges;
}
public final LinkedList<Vertex> getNeighbourVertices() {
return neighbourVertices;
}
public final void removeNeighbour(Vertex neighbourVertex) {
neighbourVertices.remove(neighbourVertex);
}
public void addNeighbourVertex(Vertex neighbourVertex) {
neighbourVertices.add(neighbourVertex);
}
}