Class S2CellIndex.ContentsIterator

  • Enclosing class:
    S2CellIndex

    public class S2CellIndex.ContentsIterator
    extends java.lang.Object
    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.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ContentsIterator()
      Creates a new iterator.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      S2CellId cellId()
      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 startUnion​(S2CellIndex.RangeIterator range)
      Positions the ContentsIterator at the first (cellId, label) pair that covers the given leaf cell range.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • prevStartId

        private S2CellId 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 nodeCutoff
        The maximum index within S2CellIndex.cellNodes visited during the previous call to startUnion(). This is used to eliminate duplicate values when startUnion() is called multiple times.
      • nextNodeCutoff

        private int nextNodeCutoff
        The maximum index within S2CellIndex.cellNodes visited during the current call to startUnion(). This is used to update nodeCutoff.
    • Method Detail

      • clear

        public void clear()
        Clears all state with respect to which range(s) have been visited.
      • startUnion

        public void startUnion​(S2CellIndex.RangeIterator range)
        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

        public S2CellId 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.