private Iterator<T> filterNodes(Iterator<T> nodeIterator) { return new FilterIterator<>(nodeIterator, subset::contains); }
@Override public T next() throws NoSuchElementException { if (done) { throw new java.util.NoSuchElementException(); } T o = next; advance(); return o; }
public static <T, S extends T> Iterator<S> filter(Iterator<T> iterator, final Class<S> cls) { return new MapIterator<>(new FilterIterator<>(iterator, cls::isInstance), cls::cast); } }
@Override public T next() throws NoSuchElementException { if (done) { throw new java.util.NoSuchElementException(); } T o = next; advance(); return o; }
public static <T, S extends T> Iterator<S> filter(Iterator<T> iterator, final Class<S> cls) { return new MapIterator<>(new FilterIterator<>(iterator, cls::isInstance), cls::cast); } }
@Override public T next() throws NoSuchElementException { if (done) { throw new java.util.NoSuchElementException(); } T o = next; advance(); return o; }
public static <T, S extends T> Iterator<S> filter(Iterator<T> iterator, final Class<S> cls) { return new MapIterator<>(new FilterIterator<>(iterator, cls::isInstance), cls::cast); } }
@Override public Iterator<? extends BasicBlockInContext<IExplodedBasicBlock>> getCalledNodes(BasicBlockInContext<IExplodedBasicBlock> call) { final Predicate<BasicBlockInContext<IExplodedBasicBlock>> isEntryFilter = BasicBlockInContext::isEntryBlock; return new FilterIterator<>(getSuccNodes(call), isEntryFilter); }
@Override protected Iterator<T> getConnected(T n) { return new FilterIterator<>(G.getSuccNodes(n), filter); } };
@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Iterator<AbstractStatement> getStatements() { return new FilterIterator(graph.iterator(), AbstractStatement.class::isInstance); }
@Override protected Iterator<T> getConnected(T n) { return new FilterIterator<>(G.getSuccNodes(n), filter); } };
@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Iterator<AbstractStatement> getStatements() { return new FilterIterator(graph.iterator(), AbstractStatement.class::isInstance); }
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new FilterIterator<>( base.getCreationSites(CG), o -> o.fst.equals(creator)); } }
@Override protected Iterator<T> getConnected(T n) { return new FilterIterator<>(G.getSuccNodes(n), filter); } };
@Override public Iterator<? extends INodeWithNumber> getVariables() { return new FilterIterator<>(graph.iterator(), x -> x != null); }
@Override public Iterator<? extends INodeWithNumber> getVariables() { return new FilterIterator<>(graph.iterator(), x -> x != null); }
/** * @return {@link Iterator}<{@link PointerKey}> */ public Iterator<PointerKey> getTransitiveRoots() { return new FilterIterator<>(iterateKeys(), this::isTransitiveRoot); }
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new FilterIterator<>( base.getCreationSites(CG), o -> o.fst.equals(creator)); } }
@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Iterator<AbstractStatement> getStatements() { return new FilterIterator(graph.iterator(), AbstractStatement.class::isInstance); }
/** * @return {@link Iterator}<{@link PointerKey}> */ public Iterator<PointerKey> getTransitiveRoots() { return new FilterIterator<>(iterateKeys(), this::isTransitiveRoot); }