Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Utils / GrowingArray.cs / 1305376 / GrowingArray.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//
// GrowingArray.cs
//
// [....]
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
using System.Diagnostics.Contracts;
namespace System.Linq.Parallel
{
///
/// A growing array. Unlike List{T}, it makes the internal array available to its user.
///
///
internal class GrowingArray
{
T[] m_array;
int m_count;
const int DEFAULT_ARRAY_SIZE = 1024;
internal GrowingArray()
{
m_array = new T[DEFAULT_ARRAY_SIZE];
m_count = 0;
}
//----------------------------------------------------------------------------------------
// Returns the internal array representing the list. Note that the array may be larger
// than necessary to hold all elements in the list.
//
internal T[] InternalArray
{
get { return m_array; }
}
internal int Count
{
get { return m_count; }
}
internal void Add(T element)
{
if (m_count >= m_array.Length)
{
GrowArray(2 * m_array.Length);
}
m_array[m_count++] = element;
}
private void GrowArray(int newSize)
{
Contract.Assert(newSize > m_array.Length);
T[] array2 = new T[newSize];
m_array.CopyTo(array2, 0);
m_array = array2;
}
internal void CopyFrom(T[] otherArray, int otherCount)
{
// Ensure there is just enough room for both.
if (m_count + otherCount > m_array.Length)
{
GrowArray(m_count + otherCount);
}
// And now just blit the keys directly.
Array.Copy(otherArray, 0, m_array, m_count, otherCount);
m_count += otherCount;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//
// GrowingArray.cs
//
// [....]
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
using System.Diagnostics.Contracts;
namespace System.Linq.Parallel
{
///
/// A growing array. Unlike List{T}, it makes the internal array available to its user.
///
///
internal class GrowingArray
{
T[] m_array;
int m_count;
const int DEFAULT_ARRAY_SIZE = 1024;
internal GrowingArray()
{
m_array = new T[DEFAULT_ARRAY_SIZE];
m_count = 0;
}
//----------------------------------------------------------------------------------------
// Returns the internal array representing the list. Note that the array may be larger
// than necessary to hold all elements in the list.
//
internal T[] InternalArray
{
get { return m_array; }
}
internal int Count
{
get { return m_count; }
}
internal void Add(T element)
{
if (m_count >= m_array.Length)
{
GrowArray(2 * m_array.Length);
}
m_array[m_count++] = element;
}
private void GrowArray(int newSize)
{
Contract.Assert(newSize > m_array.Length);
T[] array2 = new T[newSize];
m_array.CopyTo(array2, 0);
m_array = array2;
}
internal void CopyFrom(T[] otherArray, int otherCount)
{
// Ensure there is just enough room for both.
if (m_count + otherCount > m_array.Length)
{
GrowArray(m_count + otherCount);
}
// And now just blit the keys directly.
Array.Copy(otherArray, 0, m_array, m_count, otherCount);
m_count += otherCount;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IndentedTextWriter.cs
- GridViewRow.cs
- SqlException.cs
- HashHelper.cs
- ListSurrogate.cs
- NonParentingControl.cs
- Container.cs
- RsaSecurityToken.cs
- WinCategoryAttribute.cs
- SoapSchemaExporter.cs
- CodeGenerator.cs
- DataServiceStreamProviderWrapper.cs
- QueryPageSettingsEventArgs.cs
- XmlDataSource.cs
- RegexInterpreter.cs
- ErrorInfoXmlDocument.cs
- DoubleStorage.cs
- FastEncoderStatics.cs
- DataSourceHelper.cs
- BindToObject.cs
- CodeGen.cs
- BufferManager.cs
- IntegerValidatorAttribute.cs
- ScrollProviderWrapper.cs
- TimeSpanStorage.cs
- StringUtil.cs
- RSACryptoServiceProvider.cs
- SqlDelegatedTransaction.cs
- ToolStripSystemRenderer.cs
- DataGridViewSelectedRowCollection.cs
- SmtpReplyReaderFactory.cs
- UnsafePeerToPeerMethods.cs
- DesignerSerializationOptionsAttribute.cs
- VisualStateGroup.cs
- SharedDp.cs
- XXXInfos.cs
- TcpAppDomainProtocolHandler.cs
- WebBrowserContainer.cs
- FileChangesMonitor.cs
- Knowncolors.cs
- MobileCategoryAttribute.cs
- TextReader.cs
- SaveFileDialogDesigner.cs
- SQlBooleanStorage.cs
- PkcsMisc.cs
- PriorityQueue.cs
- ArrangedElement.cs
- XmlSchemaImporter.cs
- IFlowDocumentViewer.cs
- GridViewCommandEventArgs.cs
- RemoteWebConfigurationHostServer.cs
- FieldDescriptor.cs
- EventDrivenDesigner.cs
- CharacterHit.cs
- TextComposition.cs
- ReplacementText.cs
- BrowsableAttribute.cs
- StatusBarAutomationPeer.cs
- ExtensibleClassFactory.cs
- DeobfuscatingStream.cs
- Attribute.cs
- KoreanLunisolarCalendar.cs
- ComponentConverter.cs
- TemplateBuilder.cs
- XNodeNavigator.cs
- SoapTypeAttribute.cs
- SoapInteropTypes.cs
- TextEffectResolver.cs
- BrowserInteropHelper.cs
- EmptyEnumerator.cs
- RangeBaseAutomationPeer.cs
- CharacterString.cs
- TemplatePartAttribute.cs
- FontFamily.cs
- StateMachine.cs
- CardSpaceShim.cs
- CoTaskMemHandle.cs
- BezierSegment.cs
- RefType.cs
- HighContrastHelper.cs
- WeakEventManager.cs
- embossbitmapeffect.cs
- NavigationProgressEventArgs.cs
- Filter.cs
- CompositeActivityDesigner.cs
- NativeMethods.cs
- BitmapMetadataBlob.cs
- SequentialUshortCollection.cs
- HtmlShim.cs
- AccessDataSourceView.cs
- InkCollectionBehavior.cs
- GcHandle.cs
- ObjectItemCollection.cs
- StackBuilderSink.cs
- DataGridViewComboBoxColumn.cs
- ContextBase.cs
- InputScopeConverter.cs
- ByteStorage.cs
- PolicyException.cs
- _UncName.cs