Package com.google.common.geometry
Class S2CellIndex.ContentsIterator
java.lang.Object
com.google.common.geometry.S2CellIndex.ContentsIterator
- Enclosing class:
S2CellIndex
An iterator that visits the (cellId, label) pairs that cover a set of leaf cell ranges (see
RangeIterator). To use it, construct an instance or
clear()
an existing instance, and
startUnion(com.google.common.geometry.S2CellIndex.RangeIterator)
to visit the contents of each desired leaf cell range.
Note that when multiple leaf cell ranges are visited, this class only guarantees that each
result will be reported at least once, i.e. duplicate values may be suppressed. If you want
duplicate values to be reported again, be sure to call clear()
first.
In particular, the implementation guarantees that when multiple leaf cell ranges are visited in monotonically increasing order, then each (cellId, label) pair is reported exactly once.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
A special label indicating thatdone()
is true.private int
The maximum index withinS2CellIndex.cellNodes
visited during the current call to startUnion().private final S2CellIndex.CellNode
A copy of the current node in the cell tree.private int
The maximum index withinS2CellIndex.cellNodes
visited during the previous call to startUnion().private S2CellId
The value of it.startId() from the previous call to startUnion(). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncellId()
Returns the S2CellId of the current (cellId, label) pair.void
clear()
Clears all state with respect to which range(s) have been visited.boolean
done()
Returns true if all (cellId, label) pairs have been visited.int
label()
Returns the label of the current (cellId, label) pair.void
next()
Advances the iterator to the next (cellId, label) pair covered by the current leaf cell range.private void
setDone()
Sets the current node label to DONE to indicate that iteration has finished.void
Positions the ContentsIterator at the first (cellId, label) pair that covers the given leaf cell range.
-
Field Details
-
DONE
private static final int DONEA special label indicating thatdone()
is true.- See Also:
-
prevStartId
The value of it.startId() from the previous call to startUnion(). This is used to check whether these values are monotonically increasing. -
nodeCutoff
private int nodeCutoffThe maximum index withinS2CellIndex.cellNodes
visited during the previous call to startUnion(). This is used to eliminate duplicate values when startUnion() is called multiple times. -
nextNodeCutoff
private int nextNodeCutoffThe maximum index withinS2CellIndex.cellNodes
visited during the current call to startUnion(). This is used to update nodeCutoff. -
node
A copy of the current node in the cell tree.
-
-
Constructor Details
-
ContentsIterator
private ContentsIterator()Creates a new iterator. CallstartUnion(com.google.common.geometry.S2CellIndex.RangeIterator)
next.
-
-
Method Details
-
clear
public void clear()Clears all state with respect to which range(s) have been visited. -
startUnion
Positions the ContentsIterator at the first (cellId, label) pair that covers the given leaf cell range. Note that when multiple leaf cell ranges are visited using the same ContentsIterator, duplicate values may be suppressed. If you don't want this behavior, call clear() first. -
cellId
Returns the S2CellId of the current (cellId, label) pair. -
label
public int label()Returns the label of the current (cellId, label) pair. -
done
public boolean done()Returns true if all (cellId, label) pairs have been visited. -
next
public void next()Advances the iterator to the next (cellId, label) pair covered by the current leaf cell range. -
setDone
private void setDone()Sets the current node label to DONE to indicate that iteration has finished.
-