/// /// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. /// * /// Author: Alexander Gnauck AG-Software /// * /// This file is part of GNU Libidn. /// * /// 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, write to the Free Software /// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 /// USA /// using System; using System.Collections; namespace gnu.inet.encoding.misc { /// /// HashSet class. /// public class HashSet : ArrayList { public HashSet() : base() { } public HashSet(System.Collections.ICollection c) { this.AddAll(c); } public HashSet(int capacity) : base(capacity) { } /// /// Adds a new element to the ArrayList if it is not already present. /// /// Element to insert to the ArrayList. /// Returns true if the new element was inserted, false otherwise. new public virtual bool Add(System.Object obj) { bool inserted; if ((inserted = this.Contains(obj)) == false) { base.Add(obj); } return !inserted; } /// /// Adds all the elements of the specified collection that are not present to the list. /// /// Collection where the new elements will be added /// Returns true if at least one element was added, false otherwise. public bool AddAll(System.Collections.ICollection c) { System.Collections.IEnumerator e = new System.Collections.ArrayList(c).GetEnumerator(); bool added = false; while (e.MoveNext() == true) { if (this.Add(e.Current) == true) added = true; } return added; } /// /// Returns a copy of the HashSet instance. /// /// Returns a shallow copy of the current HashSet. public override System.Object Clone() { return base.MemberwiseClone(); } } }