Class IteratorInstance<N,​R>

    • Constructor Detail

      • IteratorInstance

        public IteratorInstance​(@NotNull
                                IterationConditions<N> iterationConditions,
                                @NotNull
                                java.util.function.Predicate<? super N> filterPredicate,
                                @NotNull
                                java.util.function.Predicate<? super N> recursionPredicate,
                                @NotNull
                                N element)
      • IteratorInstance

        public IteratorInstance​(@NotNull
                                IterationConditions<N> iterationConditions,
                                @NotNull
                                java.util.function.Predicate<? super N> filterPredicate,
                                @NotNull
                                java.util.function.Predicate<? super N> recursionPredicate,
                                @NotNull
                                N element,
                                @NotNull
                                java.lang.Object defaultValue)
    • Method Detail

      • getHaveNext

        public boolean getHaveNext()
        Specified by:
        getHaveNext in interface VoidIteration
        Returns:
        true if have next element, does not mean it matches filters, just raw next from loop iterator, fast check
      • getHaveAcceptableNext

        public boolean getHaveAcceptableNext()
        Specified by:
        getHaveAcceptableNext in interface VoidIteration
        Returns:
        true if have next element and it passes element filters.

        NOTE: ValueIterationConsumerAdapter not invoked. It is part of the consumer.accept() call hierarchy and can have code side-effects. Only predicate filters are tested. This does not mean the final consumer will see this value.

      • setResult

        public void setResult​(@NotNull
                              java.lang.Object value)
        Description copied from interface: ValueIteration
        Set the result which will be returned by the loop if terminated without ValueIteration.Return(Object) call.
        Specified by:
        setResult in interface ValueIteration<N>
        Parameters:
        value - value to return from the loop
      • getResult

        @NotNull
        public R getResult()
        Specified by:
        getResult in interface ValueIteration<N>
        Returns:
        current result value
      • Return

        public void Return​(@NotNull
                           java.lang.Object value)
        Description copied from interface: ValueIteration
        Set result value and terminate all recursions
        Specified by:
        Return in interface ValueIteration<N>
        Parameters:
        value - value to return for the result of the loop
      • doReturn

        public void doReturn()
        Description copied from interface: VoidIteration
        Break out of all recursion levels and return current result value for the loop if value loop
        Specified by:
        doReturn in interface VoidIteration
      • doContinue

        public void doContinue​(int recursionLevel)
        Description copied from interface: VoidIteration
        Continue with the next iteration of the given recursion level
        Specified by:
        doContinue in interface VoidIteration
        Parameters:
        recursionLevel - 0 current, <0 previous recursion levels, gt;0 actual recursion level
      • doBreak

        public void doBreak​(int recursionLevel)
        Description copied from interface: VoidIteration
        Break out of given recursion level
        Specified by:
        doBreak in interface VoidIteration
        Parameters:
        recursionLevel - 0 current, lt;0 previous recursion levels, gt;0 actual recursion level
      • getMatch

        @Nullable
        public N getMatch()
      • isComplete

        public boolean isComplete()
        Specified by:
        isComplete in interface VoidIteration
        Returns:
        true if current iteration is complete ie. had ( Break(), Continue(), Return(), Complete())
      • isIncomplete

        public boolean isIncomplete()
        Specified by:
        isIncomplete in interface VoidIteration
        Returns:
        true if current iteration is not complete, ie. need to continue processing
      • ifIncomplete

        public void ifIncomplete​(@NotNull
                                 java.lang.Runnable runnable)
        Description copied from interface: VoidIteration
        Run the passed code only if the current iteration is not complete
        Specified by:
        ifIncomplete in interface VoidIteration
        Parameters:
        runnable - to run
      • doComplete

        public void doComplete()
        Description copied from interface: VoidIteration
        Complete current iteration, ie. isComplete() will report true and isIncomplete() false

        Purely a convenience feature to use without needing to track if break or continue have been executed

        Specified by:
        doComplete in interface VoidIteration
      • getLoopCount

        public int getLoopCount()
        Specified by:
        getLoopCount in interface VoidIteration
        Returns:
        times through the loop of the current recursion level, includes skipped elements due to filtering
      • getAcceptCount

        public int getAcceptCount()
        Specified by:
        getAcceptCount in interface VoidIteration
        Returns:
        total times consumer was invoked, ie. valid elements
      • getTotalLoopCount

        public int getTotalLoopCount()
        Specified by:
        getTotalLoopCount in interface VoidIteration
        Returns:
        current loop count across all recursions
      • getTotalAcceptCount

        public int getTotalAcceptCount()
        Specified by:
        getTotalAcceptCount in interface VoidIteration
        Returns:
        accept count across all recursions
      • getRecursionLevel

        public int getRecursionLevel()
        Specified by:
        getRecursionLevel in interface VoidIteration
        Returns:
        count of recursion level, can use in Break(recursionLevel) or Continue(recursionLevel) to break/continue a particular recursion
      • getDefaultValue

        @NotNull
        public R getDefaultValue()
        Specified by:
        getDefaultValue in interface ValueIteration<N>
        Returns:
        defaultValue passed to loop instance