@Override public IntIterator intIterator() { if (privatePart == null) { return (sharedPart == null) ? EmptyIntIterator.instance() : sharedPart.intIterator(); } else { return (sharedPart == null) ? privatePart.intIterator() : new CompoundIntIterator(privatePart.intIterator(), sharedPart .intIterator()); } }
@Override public IntIterator intIterator() { if (privatePart == null) { return (sharedPart == null) ? EmptyIntIterator.instance() : sharedPart.intIterator(); } else { return (sharedPart == null) ? privatePart.intIterator() : new CompoundIntIterator(privatePart.intIterator(), sharedPart .intIterator()); } }
@Override public IntIterator intIterator() { if (privatePart == null) { return (sharedPart == null) ? EmptyIntIterator.instance() : sharedPart.intIterator(); } else { return (sharedPart == null) ? privatePart.intIterator() : new CompoundIntIterator(privatePart.intIterator(), sharedPart .intIterator()); } }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
/** * TODO: optimize * */ public SparseIntSet toSparseIntSet() { MutableSparseIntSet result = MutableSparseIntSet.makeEmpty(); for (IntIterator it = intIterator(); it.hasNext();) { result.add(it.next()); } return result; }
@Override public boolean isSubset(IntSet that) { if (that instanceof BitVectorIntSet) { return bitVector.isSubset(((BitVectorIntSet) that).bitVector); } else if (that instanceof SparseIntSet) { return isSubsetInternal((SparseIntSet) that); } else { // really slow. optimize as needed. for (IntIterator it = intIterator(); it.hasNext();) { int x = it.next(); if (!that.contains(x)) { return false; } } return true; } }
@Override public boolean isSubset(IntSet that) { if (that instanceof BitVectorIntSet) { return bitVector.isSubset(((BitVectorIntSet) that).bitVector); } else if (that instanceof SparseIntSet) { return isSubsetInternal((SparseIntSet) that); } else { // really slow. optimize as needed. for (IntIterator it = intIterator(); it.hasNext();) { int x = it.next(); if (!that.contains(x)) { return false; } } return true; } }
@Override public boolean isSubset(IntSet that) { if (that instanceof BitVectorIntSet) { return bitVector.isSubset(((BitVectorIntSet) that).bitVector); } else if (that instanceof SparseIntSet) { return isSubsetInternal((SparseIntSet) that); } else { // really slow. optimize as needed. for (IntIterator it = intIterator(); it.hasNext();) { int x = it.next(); if (!that.contains(x)) { return false; } } return true; } }
@Override public IntSet getPredNodeNumbers(CGNode node) { IntSet superR = super.getPredNodeNumbers(node); if (superR == null) { return null; } else { MutableSparseIntSet result = MutableSparseIntSet.make(superR); BitVectorIntSet allPossiblePreds = new BitVectorIntSet(superR); for (IntIterator it = superR.intIterator(); it.hasNext();) { int x = it.next(); IntSet ySet = delegateR.getRelated(x); if (ySet != null) { allPossiblePreds.addAll(ySet); } } for (IntIterator it = allPossiblePreds.intIterator(); it.hasNext();) { int y = it.next(); DelegatingCGNode yNode = (DelegatingCGNode) getNode(y); if (hasEdge(yNode, node)) { result.add(y); } } return result; } } }
@Override public IntSet getPredNodeNumbers(CGNode node) { IntSet superR = super.getPredNodeNumbers(node); if (superR == null) { return null; } else { MutableSparseIntSet result = MutableSparseIntSet.make(superR); BitVectorIntSet allPossiblePreds = new BitVectorIntSet(superR); for (IntIterator it = superR.intIterator(); it.hasNext();) { int x = it.next(); IntSet ySet = delegateR.getRelated(x); if (ySet != null) { allPossiblePreds.addAll(ySet); } } for (IntIterator it = allPossiblePreds.intIterator(); it.hasNext();) { int y = it.next(); DelegatingCGNode yNode = (DelegatingCGNode) getNode(y); if (hasEdge(yNode, node)) { result.add(y); } } return result; } } }