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
- ChtmlSelectionListAdapter.cs
- CommonObjectSecurity.cs
- ValidateNames.cs
- CharacterHit.cs
- base64Transforms.cs
- TableStyle.cs
- MouseButton.cs
- DtdParser.cs
- TrackBarRenderer.cs
- SQLStringStorage.cs
- TextReader.cs
- TypeDescriptorFilterService.cs
- WorkflowEnvironment.cs
- TemplateXamlParser.cs
- SessionPageStatePersister.cs
- ExtensibleSyndicationObject.cs
- ButtonChrome.cs
- InputReportEventArgs.cs
- StreamGeometry.cs
- TimeSpanStorage.cs
- HttpListenerException.cs
- SymLanguageVendor.cs
- Baml2006ReaderContext.cs
- Property.cs
- Soap.cs
- ToolTip.cs
- SessionEndingCancelEventArgs.cs
- UnsafeNativeMethods.cs
- XmlName.cs
- AsyncOperation.cs
- FixedFlowMap.cs
- OleDbMetaDataFactory.cs
- PanelStyle.cs
- ListSortDescriptionCollection.cs
- ImageCollectionEditor.cs
- DbgUtil.cs
- DataBindingExpressionBuilder.cs
- XmlBinaryReader.cs
- WorkflowShape.cs
- SetState.cs
- Int32Rect.cs
- DataGridColumnCollection.cs
- DeclarationUpdate.cs
- HttpApplicationFactory.cs
- ListItemCollection.cs
- DbConnectionOptions.cs
- InternalMappingException.cs
- XmlSiteMapProvider.cs
- XPathDocument.cs
- thaishape.cs
- RadioButtonRenderer.cs
- SqlConnectionPoolGroupProviderInfo.cs
- StyleXamlTreeBuilder.cs
- AutomationAttributeInfo.cs
- ConsoleCancelEventArgs.cs
- CollectionMarkupSerializer.cs
- DirectoryGroupQuery.cs
- TextSpanModifier.cs
- TopClause.cs
- MSAANativeProvider.cs
- WindowsNonControl.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- PointAnimation.cs
- SetIterators.cs
- FlowDocumentPage.cs
- DocumentPaginator.cs
- Typeface.cs
- ParameterReplacerVisitor.cs
- SetIndexBinder.cs
- InternalTypeHelper.cs
- XmlEnumAttribute.cs
- ToolStrip.cs
- BaseProcessor.cs
- MenuItem.cs
- RuntimeConfigLKG.cs
- ValueCollectionParameterReader.cs
- COM2ExtendedTypeConverter.cs
- ComplexPropertyEntry.cs
- RegexStringValidator.cs
- CodePageEncoding.cs
- ListView.cs
- Renderer.cs
- SpellCheck.cs
- RotateTransform3D.cs
- ExpandSegment.cs
- EntityDescriptor.cs
- XmlSchemaAll.cs
- Annotation.cs
- XmlHelper.cs
- CalendarKeyboardHelper.cs
- XXXOnTypeBuilderInstantiation.cs
- SqlUdtInfo.cs
- DefaultProxySection.cs
- FilteredAttributeCollection.cs
- CodeTypeDelegate.cs
- NonClientArea.cs
- DrawingAttributeSerializer.cs
- Rect.cs
- Line.cs
- DuplexChannelBinder.cs