@Override public Iterator<IClass> iterator() { Function<Node, IClass> toClass = n -> n.klass; return new MapIterator<>(map.values().iterator(), toClass); }
@Override public Iterator<IClass> iterator() { Function<Node, IClass> toClass = n -> n.klass; return new MapIterator<>(map.values().iterator(), toClass); }
/** * Unwrap a Collection of WithState<T> objects, returning a Collection containing the wrapped objects */ private static <T> Collection<T> removeStates(final Collection<? extends WithState<T>> p2SetWithStates) { if (p2SetWithStates == null) { throw new IllegalArgumentException("p2SetWithStates == null"); } Collection<T> finalP2Set = Iterator2Collection.toSet(new MapIterator<WithState<T>, T>(p2SetWithStates.iterator(), WithState::getWrapped)); return finalP2Set; }
/** * Unwrap a Collection of WithState<T> objects, returning a Collection containing the wrapped objects */ private static <T> Collection<T> removeStates(final Collection<? extends WithState<T>> p2SetWithStates) { if (p2SetWithStates == null) { throw new IllegalArgumentException("p2SetWithStates == null"); } Collection<T> finalP2Set = Iterator2Collection.toSet(new MapIterator<WithState<T>, T>(p2SetWithStates.iterator(), WithState::getWrapped)); return finalP2Set; }
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); } }
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); } }
/** * @return the classes that immediately extend klass. if klass is an array class A[][]...[], we return array classes B[][]...[] * (same dimensionality) where B is an immediate subclass of A. If A is primitive, we return the empty set. */ @Override public Collection<IClass> getImmediateSubclasses(IClass klass) { if (klass.isArrayClass()) { return getImmediateArraySubclasses((ArrayClass)klass); } Function<Node, IClass> node2Class = n -> n.klass; return Iterator2Collection.toSet(new MapIterator<>(findNode(klass).children.iterator(), node2Class)); }
@Override public Collection<ISSABasicBlock> getExceptionalPredecessors(ISSABasicBlock b) { if (b == null) { throw new IllegalArgumentException("b is null"); } IBasicBlock<IInstruction> n = delegate.getNode(b.getNumber()); Function<IBasicBlock<IInstruction>, ISSABasicBlock> f = object -> basicBlocks[delegate.getNumber(object)]; return Iterator2Collection.toSet(new MapIterator<>(delegate .getExceptionalPredecessors(n).iterator(), f)); }
/** * @return the classes that immediately extend klass. if klass is an array class A[][]...[], we return array classes B[][]...[] * (same dimensionality) where B is an immediate subclass of A. If A is primitive, we return the empty set. */ @Override public Collection<IClass> getImmediateSubclasses(IClass klass) { if (klass.isArrayClass()) { return getImmediateArraySubclasses((ArrayClass)klass); } Function<Node, IClass> node2Class = n -> n.klass; return Iterator2Collection.toSet(new MapIterator<>(findNode(klass).children.iterator(), node2Class)); }
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new MapIterator<>( new FilterIterator<>( CG.getNodes(method.getReference()).iterator(), o -> o.getMethod().equals(method) ), object -> Pair.make(object, site)); } }
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new MapIterator<>( new FilterIterator<>( CG.getNodes(method.getReference()).iterator(), o -> o.getMethod().equals(method) ), object -> Pair.make(object, site)); } }
/** * @return the rt.jar (1.4) or core.jar (1.5) file, or null if not found. */ private JarFile getRtJar() { return RtJar.getRtJar( new MapIterator<Module,JarFile>( new FilterIterator<>(getModules(getPrimordialLoader()).iterator(), JarFileModule.class::isInstance), M -> ((JarFileModule) M).getJarFile())); }
/** * @return the rt.jar (1.4) or core.jar (1.5) file, or null if not found. */ private JarFile getRtJar() { return RtJar.getRtJar( new MapIterator<Module,JarFile>( new FilterIterator<>(getModules(getPrimordialLoader()).iterator(), JarFileModule.class::isInstance), M -> ((JarFileModule) M).getJarFile())); }
public Iterator<FieldReference> iterateFields(CGNode node, Predicate<SSAInstruction> filter) { return new MapIterator<>( new FilterIterator<>(getIR(node).iterateNormalInstructions(), filter), object -> ((SSAFieldAccessInstruction)object).getDeclaredField()); }
public Iterator<FieldReference> iterateFields(CGNode node, Predicate<SSAInstruction> filter) { return new MapIterator<>( new FilterIterator<>(getIR(node).iterateNormalInstructions(), filter), object -> ((SSAFieldAccessInstruction)object).getDeclaredField()); }
@Override public Iterator<? extends Pair<CGNode, NewSiteReference>> makeInner(final CGNode outer) { return new MapIterator<>( new FilterIterator<>( outer.iterateNewSites(), o -> o.getDeclaredType().equals(type.getReference()) ), object -> Pair.make(outer, object)); } };
@Override public Iterator<? extends Pair<CGNode, NewSiteReference>> makeInner(final CGNode outer) { return new MapIterator<>( new FilterIterator<>( outer.iterateNewSites(), o -> o.getDeclaredType().equals(type.getReference()) ), object -> Pair.make(outer, object)); } };
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new MapIterator<>( new FilterIterator<>( getNode().iterateNewSites(), o -> o.getDeclaredType().equals(getConcreteType().getReference())), object -> Pair.make(getNode(), object)); } }
@Override public Iterator<Pair<CGNode, NewSiteReference>> getCreationSites(CallGraph CG) { return new MapIterator<>( new FilterIterator<>( getNode().iterateNewSites(), o -> o.getDeclaredType().equals(getConcreteType().getReference())), object -> Pair.make(getNode(), object)); } }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { return new MapIterator<>( new FilterIterator<>( node.getIR().iterateAllInstructions(), SSANewInstruction.class::isInstance), object -> ((SSANewInstruction)object).getNewSite() ); } };