/******************************************************************************* * Copyright (c) 2002 - 2006 IBM Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package com.ibm.wala.util.intset; /** * Set of integers; not necessary mutable TODO: extract a smaller interface? */ public interface IntSet { /** * @return true iff this set contains integer i */ public boolean contains(int i); /** * @return true iff this set contains integer i */ public boolean containsAny(IntSet set); /** * This implementation must not despoil the original value of "this" * * @return a new IntSet which is the intersection of this and that */ public IntSet intersection(IntSet that); /** * This implementation must not despoil the original value of "this" * * @return a new IntSet containing all elements of this and that */ public IntSet union(IntSet that); /** * @return true iff this set is empty */ public boolean isEmpty(); /** * @return the number of elements in this set */ public int size(); /** * @return a perhaps more efficient iterator */ public IntIterator intIterator(); /** * Invoke an action on each element of the Set */ public void foreach(IntSetAction action); /** * Invoke an action on each element of the Set, excluding elements of Set X */ public void foreachExcluding(IntSet X, IntSetAction action); /** * @return maximum integer in this set. */ public int max(); /** * @return true iff <code>this</code> has the same value as <code>that</code>. */ public boolean sameValue(IntSet that); /** * @return true iff <code>this</code> is a subset of <code>that</code>. */ public boolean isSubset(IntSet that); }