/// /// Copyright (C) 2004-2013 Free Software Foundation, Inc. /// /// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de /// /// This file is part of GNU Libidn. /// /// GNU Libidn is free software: you can redistribute it and/or /// modify it under the terms of either: /// /// * the GNU Lesser General Public License as published by the Free /// Software Foundation; either version 3 of the License, or (at /// your option) any later version. /// /// or /// /// * the GNU General Public License as published by the Free /// Software Foundation; either version 2 of the License, or (at /// your option) any later version. /// /// or both in parallel, as here. /// /// GNU Libidn 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 /// General Public License for more details. /// /// You should have received copies of the GNU General Public License and /// the GNU Lesser General Public License along with this program. If /// not, see . /// 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(); } } }