Class ArrayIterator<T extends Item>

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ArrayIterator.OfNodes
      ArrayIterator.OfNodes is a subclass of ArrayIterator where the array always contains Nodes; it therefore implements the AxisIterator interface.
    • Field Summary

      Modifier and Type Field Description
      protected int end  
      protected T[] items  
      protected int start  
    • Constructor Summary

      Constructor Description
      ArrayIterator​(T[] nodes)
      Create an iterator over all the items in an array
      ArrayIterator​(T[] items, int start, int end)
      Create an iterator over a range of an array.
    • Field Detail

      • items

        protected T extends Item[] items
      • start

        protected int start
      • end

        protected int end
    • Constructor Detail

      • ArrayIterator

        public ArrayIterator​(T[] nodes)
        Create an iterator over all the items in an array
        nodes - the array (of any items, not necessarily nodes) to be processed by the iterator
      • ArrayIterator

        public ArrayIterator​(T[] items,
                             int start,
                             int end)
        Create an iterator over a range of an array. Note that the start position is zero-based
        items - the array (of nodes or simple values) to be processed by the iterator
        start - the position of the first item to be processed (numbering from zero). Must be between zero and nodes.length-1; if not, undefined exceptions are likely to occur.
        end - position of first item that is NOT returned, zero-based. Must be beween 1 and nodes.length; if not, undefined exceptions are likely to occur.
    • Method Detail

      • makeSliceIterator

        public SequenceIterator makeSliceIterator​(int min,
                                                  int max)
        Create a new ArrayIterator over the same items, with a different start point and end point
        min - the start position (1-based) of the new ArrayIterator relative to the original
        max - the end position (1-based) of the last item to be delivered by the new ArrayIterator, relative to the original. For example, min=2, max=3 delivers the two items ($base[2], $base[3]). Set this to Integer.MAX_VALUE if there is no end limit.
        an iterator over the items between the min and max positions
      • hasNext

        public boolean hasNext()
        Test whether there are any more items
        Specified by:
        hasNext in interface LookaheadIterator
        true if there are more items
      • getLength

        public int getLength()
        Get the number of items in the part of the array being processed
        Specified by:
        getLength in interface LastPositionFinder
        the number of items; equivalently, the position of the last item
      • getArray

        public T[] getArray()
        Get the underlying array
        the underlying array being processed by the iterator
      • getStartPosition

        public int getStartPosition()
        Get the initial start position
        the start position of the iterator in the array (zero-based)
      • getEndPosition

        public int getEndPosition()
        Get the end position in the array
        the position in the array (zero-based) of the first item not included in the iteration
      • getResidue

        public GroundedValue getResidue()
        Description copied from interface: GroundedIterator
        Return a GroundedValue containing all the remaining items in the sequence returned by this SequenceIterator, starting at the current position. This should be an "in-memory" value, not a Closure. This method does not change the state of the iterator (in particular, it does not consume the iterator).
        Specified by:
        getResidue in interface GroundedIterator
        the corresponding Value