Search in sources :

Example 1 with Vertex

use of com.vaticle.typedb.core.graph.vertex.Vertex in project grakn by graknlabs.

the class GraphIterator method computeNext.

private boolean computeNext(int pos) {
    if (pos == 0)
        return false;
    ProcedureEdge<?, ?> edge = procedure.edge(pos);
    Identifier toID = edge.to().id();
    if (pos == computeNextSeekPos) {
        computeNextSeekPos = edgeCount;
    } else if (pos > computeNextSeekPos) {
        if (!edge.isClosureEdge())
            iterators.get(toID).recycle();
        if (!backTrack(pos))
            return false;
        if (edge.isClosureEdge()) {
            Vertex<?, ?> fromVertex = answer.get(edge.from().id());
            Vertex<?, ?> toVertex = answer.get(edge.to().id());
            if (isClosure(edge, fromVertex, toVertex))
                return true;
            else
                return computeNextClosure(pos);
        } else {
            Forwardable<? extends Vertex<?, ?>, Order.Asc> toIter = branch(answer.get(edge.from().id()), edge);
            iterators.put(toID, toIter);
        }
    }
    if (edge.isClosureEdge()) {
        return computeNextClosure(pos);
    } else if (iterators.get(toID).hasNext()) {
        answer.put(toID, iterators.get(toID).next());
        return true;
    } else {
        return computeNextBranch(pos);
    }
}
Also used : Order(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order) Vertex(com.vaticle.typedb.core.graph.vertex.Vertex) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) Identifier(com.vaticle.typedb.core.traversal.common.Identifier) Forwardable(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable)

Aggregations

Forwardable (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable)1 Order (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order)1 ThingVertex (com.vaticle.typedb.core.graph.vertex.ThingVertex)1 Vertex (com.vaticle.typedb.core.graph.vertex.Vertex)1 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)1