X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Collections%2FQueue.cs;h=ae99d9aa6d5cd900683cd8da178049bdb6cbb508;hb=546a1134d2d6d75e2989249f9b0803ec03e71789;hp=5d2cc75132671de45e482ad601f9069a0ae1db0d;hpb=e0fc892e70b6ff56d7dda7a87d2f223c96878431;p=mono.git diff --git a/mcs/class/corlib/System.Collections/Queue.cs b/mcs/class/corlib/System.Collections/Queue.cs index 5d2cc751326..ae99d9aa6d5 100644 --- a/mcs/class/corlib/System.Collections/Queue.cs +++ b/mcs/class/corlib/System.Collections/Queue.cs @@ -2,16 +2,43 @@ // System.Collections.Queue // // Author: -// Ricardo Fernández Pascual +// Ricardo Fernández Pascual // -// (C) 2001 Ricardo Fernández Pascual +// (C) 2001 Ricardo Fernández Pascual +// + +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // using System; using System.Collections; +using System.Runtime.InteropServices; namespace System.Collections { +#if NET_2_0 + [ComVisible(true)] +#endif [Serializable] public class Queue : ICollection, IEnumerable, ICloneable { @@ -29,9 +56,11 @@ namespace System.Collections { if (col == null) throw new ArgumentNullException ("col"); - _size = _array.Length; - _tail = _size; - col.CopyTo (_array, 0); + // We have to do this because msft seems to call the + // enumerator rather than CopyTo. This affects classes + // like bitarray. + foreach (object o in col) + Enqueue (o); } public Queue (int initialCapacity, float growFactor) { @@ -185,6 +214,8 @@ namespace System.Collections { private void grow () { int newCapacity = (_array.Length * _growFactor) / 100; + if (newCapacity < _array.Length + 1) + newCapacity = _array.Length + 1; object[] newContents = new object[newCapacity]; CopyTo (newContents, 0); _array = newContents;