Browse Source

imported patch succ-it-from-trans-it.patch

tud-infrastructure-2018-10-12
Joachim Klein 7 years ago
parent
commit
2aa7d731ab
  1. 48
      prism/src/explicit/SuccessorsIterator.java

48
prism/src/explicit/SuccessorsIterator.java

@ -28,10 +28,12 @@
package explicit;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.PrimitiveIterator;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.Map.Entry;
import java.util.stream.IntStream;
import java.util.stream.StreamSupport;
@ -148,6 +150,42 @@ public abstract class SuccessorsIterator implements PrimitiveIterator.OfInt
}
};
/** Wrapper, underlying iterator is an Iterator<Map.Entry<Integer,?> iterator */
private static class SuccessorsIteratorFromTransitionsIterator extends SuccessorsIterator {
private Iterator<? extends Entry<Integer, ?>> it;
private boolean distinct;
public SuccessorsIteratorFromTransitionsIterator(Iterator<? extends Map.Entry<Integer,?>> it, boolean distinct)
{
this.it = it;
this.distinct = distinct;
}
@Override
public boolean hasNext()
{
return it.hasNext();
}
@Override
public Integer next()
{
return it.next().getKey();
}
@Override
public int nextInt()
{
return it.next().getKey();
}
@Override
public boolean successorsAreDistinct()
{
return distinct;
}
};
/** Helper, empty iterator */
private static class SuccessorsIteratorEmpty extends SuccessorsIterator {
@Override
@ -244,6 +282,16 @@ public abstract class SuccessorsIterator implements PrimitiveIterator.OfInt
return new SuccessorsIteratorFromOfInt(it, distinctElements);
}
/**
* Obtain a SuccessorsIterator with the given distinctness guarantee from a
* transitions iterator, i.e., an iterator over Map.Entry<Integer, ?> objects
* (or derived classes).
*/
public static SuccessorsIterator fromTransitionsIterator(Iterator<? extends Map.Entry<Integer,?>> it, boolean distinctElements)
{
return new SuccessorsIteratorFromTransitionsIterator(it, distinctElements);
}
/** Obtain a SuccessorsIterator for a single state */
public static SuccessorsIterator fromSingleton(int i)
{

Loading…
Cancel
Save