/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Blacksmith, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.foundation; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.Vector; /** * A pure java implementation of NSSet that implements Set for greater java * interoperability. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 893 $ */ public class NSSet extends HashSet { /** * Default constructor. */ public NSSet() { super(); } /** * Constructs a NSSet containing the objects in the specified collection. */ public NSSet(Collection aCollection) { super(aCollection); } /** * Constructs a NSSet containing only the specified object. */ public NSSet(Object anObject) { super(); add(anObject); } /** * Constructs a NSSet containing the objects in the specified array. */ public NSSet(Object[] anObjectArray) { super(); for (int i = 0; i < anObjectArray.length; i++) { add(anObjectArray[i]); } } /** * Returns an NSArray containing all objects in the set. */ public NSArray allObjects() { return new NSArray(this); } /** * */ public Object anyObject() { throw new RuntimeException("Not implemented yet."); } /** * Returns whether this set contains the specified object. */ public boolean containsObject(Object anObject) { return contains(anObject); } /** * Returns the number of elements in this set. */ public int count() { return size(); } /** * Returns whether this set has one or more elements in common with the * specified set. */ public boolean intersectsSet(Set aSet) { Iterator it = aSet.iterator(); while (it.hasNext()) { if (this.containsObject(it.next())) { return true; } } return false; } /** * Returns whether this set contains the same object as the specified set. */ public boolean isEqualToSet(Set aSet) { return equals(aSet); } /** * Returns whether this set is a subset of the specified set. */ public boolean isSubsetOfSet(Set aSet) { return aSet.containsAll(this); } /** * */ public Object member(Object anObject) { throw new RuntimeException("Not implemented yet."); } /** * Returns an enumerator over the objects in this set. */ public Enumeration objectEnumerator() { return new Vector(this).elements(); } /** * Returns a set that is the intersection of this set and the specified set. */ public NSSet setByIntersectingSet(Set aSet) { NSSet result = new NSSet(this); result.retainAll(aSet); return result; } /** * Returns a set that contains all elements in this set that are not in the * specified set. */ public NSSet setBySubtractingSet(Set aSet) { NSSet result = new NSSet(this); result.removeAll(aSet); return result; } /** * Returns a set that is the union of this set and the specified set. */ public NSSet setByUnioningSet(Set aSet) { NSSet result = new NSSet(this); result.addAll(aSet); return result; } } /* * $Log$ Revision 1.2 2006/02/16 13:15:00 cgruber Check in all sources in * eclipse-friendly maven-enabled packages. * * Revision 1.1.1.1 2000/12/21 15:47:45 mpowers Contributing wotonomy. * * Revision 1.3 2000/12/20 16:25:39 michael Added log to all files. * * */