@Override public boolean isShortcut(int edgeId) { assert baseGraph.isFrozen() : "level graph not yet frozen"; return edgeId >= baseGraph.edgeCount; }
@Override public final boolean isShortcut() { assert baseGraph.isFrozen() : "level graph not yet frozen"; return edgeAccess == chEdgeAccess; }
boolean isFrozen() { return baseGraph.isFrozen(); }
public void checkFreeze() { if (isFrozen()) throw new IllegalStateException("Cannot add edge or node after baseGraph.freeze was called"); }
/** * Avoid that edges and nodes of the base graph are further modified. Necessary as hook for e.g. * ch graphs on top to initialize themselves */ public synchronized void freeze() { if (!baseGraph.isFrozen()) baseGraph.freeze(); }
synchronized void freeze() { if (isFrozen()) throw new IllegalStateException("base graph already frozen"); frozen = true; listener.freeze(); }
@Override public final CHEdgeIterator setBaseNode(int baseNode) { assert baseGraph.isFrozen() : "Traversal CHGraph is only possible if BaseGraph is frozen"; // always use ch edge access setEdgeId(chEdgeAccess.getEdgeRef(baseNode)); _setBaseNode(baseNode); return this; }
@Override public CHEdgeIteratorState shortcut(int a, int b) { if (!baseGraph.isFrozen()) throw new IllegalStateException("Cannot create shortcut if graph is not yet frozen"); checkNodeId(a); checkNodeId(b); int scId = chEdgeAccess.internalEdgeAdd(nextShortcutId(), a, b); CHEdgeIteratorImpl iter = new CHEdgeIteratorImpl(baseGraph, chEdgeAccess, EdgeFilter.ALL_EDGES); boolean ret = iter.init(scId, b); assert ret; iter.setSkippedEdges(EdgeIterator.NO_EDGE, EdgeIterator.NO_EDGE); return iter; }
/** * Create edge between nodes a and b * <p> * * @return EdgeIteratorState of newly created edge */ @Override public EdgeIteratorState edge(int nodeA, int nodeB) { if (isFrozen()) throw new IllegalStateException("Cannot create edge if graph is already frozen"); ensureNodeIndex(Math.max(nodeA, nodeB)); int edgeId = edgeAccess.internalEdgeAdd(nextEdgeId(), nodeA, nodeB); EdgeIterable iter = new EdgeIterable(this, edgeAccess, EdgeFilter.ALL_EDGES); boolean ret = iter.init(edgeId, nodeB); assert ret; if (extStorage.isRequireEdgeField()) iter.setAdditionalField(extStorage.getDefaultEdgeFieldValue()); return iter; }
protected int setNodesHeader() { nodes.setHeader(1 * 4, nodeEntryBytes); nodes.setHeader(2 * 4, nodeCount); nodes.setHeader(3 * 4, Helper.degreeToInt(bounds.minLon)); nodes.setHeader(4 * 4, Helper.degreeToInt(bounds.maxLon)); nodes.setHeader(5 * 4, Helper.degreeToInt(bounds.minLat)); nodes.setHeader(6 * 4, Helper.degreeToInt(bounds.maxLat)); if (bounds.hasElevation()) { nodes.setHeader(7 * 4, Helper.eleToInt(bounds.minEle)); nodes.setHeader(8 * 4, Helper.eleToInt(bounds.maxEle)); } nodes.setHeader(9 * 4, isFrozen() ? 1 : 0); return 10; }
@Override public final boolean isShortcut() { assert baseGraph.isFrozen() : "level graph not yet frozen"; return edgeAccess == chEdgeAccess; }
@Override public boolean isShortcut( int edgeId ) { assert baseGraph.isFrozen() : "level graph not yet frozen"; return edgeId >= baseGraph.edgeCount; }
public void checkFreeze() { if (isFrozen()) throw new IllegalStateException("Cannot add edge or node after baseGraph.freeze was called"); }
synchronized void freeze() { if (isFrozen()) throw new IllegalStateException("base graph already frozen"); frozen = true; listener.freeze(); }
/** * Avoid that edges and nodes of the base graph are further modified. Necessary as hook for e.g. * ch graphs on top to initilize themself */ public synchronized void freeze() { if (!baseGraph.isFrozen()) baseGraph.freeze(); }
/** * Avoid that edges and nodes of the base graph are further modified. Necessary as hook for e.g. * ch graphs on top to initialize themselves */ public synchronized void freeze() { if (!baseGraph.isFrozen()) baseGraph.freeze(); }
synchronized void freeze() { if (isFrozen()) throw new IllegalStateException("base graph already frozen"); frozen = true; listener.freeze(); }
synchronized void freeze() { if (isFrozen()) throw new IllegalStateException("base graph already frozen"); frozen = true; listener.freeze(); }
@Override public final CHEdgeIterator setBaseNode(int baseNode) { assert baseGraph.isFrozen() : "Traversal CHGraph is only possible if BaseGraph is frozen"; // always use ch edge access setEdgeId(chEdgeAccess.getEdgeRef(baseNode)); _setBaseNode(baseNode); return this; }
@Override public CHEdgeIteratorState shortcut(int a, int b) { if (!baseGraph.isFrozen()) throw new IllegalStateException("Cannot create shortcut if graph is not yet frozen"); checkNodeId(a); checkNodeId(b); int scId = chEdgeAccess.internalEdgeAdd(nextShortcutId(), a, b); CHEdgeIteratorImpl iter = new CHEdgeIteratorImpl(baseGraph, chEdgeAccess, EdgeFilter.ALL_EDGES); boolean ret = iter.init(scId, b); assert ret; iter.setSkippedEdges(EdgeIterator.NO_EDGE, EdgeIterator.NO_EDGE); return iter; }