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
- WrappedKeySecurityToken.cs
- WebServiceReceiveDesigner.cs
- IgnoreSection.cs
- ToolStripManager.cs
- ComPlusDiagnosticTraceRecords.cs
- ToolboxItemCollection.cs
- TextUtf8RawTextWriter.cs
- CodeChecksumPragma.cs
- AutoSizeToolBoxItem.cs
- DoubleLinkList.cs
- XmlArrayItemAttribute.cs
- HttpServerProtocol.cs
- ResourceContainer.cs
- RequestCacheValidator.cs
- TextEndOfSegment.cs
- SoapSchemaImporter.cs
- ProviderConnectionPointCollection.cs
- StreamingContext.cs
- Internal.cs
- Stylesheet.cs
- CompilationRelaxations.cs
- Parser.cs
- ToolStripTextBox.cs
- CodeTypeReferenceExpression.cs
- PermissionRequestEvidence.cs
- EpmCustomContentSerializer.cs
- DecoderBestFitFallback.cs
- BinaryObjectInfo.cs
- CodeAttributeArgument.cs
- RelativeSource.cs
- ToolStripDropDownButton.cs
- HScrollProperties.cs
- ContextBase.cs
- ListBase.cs
- XPathNavigatorKeyComparer.cs
- GacUtil.cs
- coordinatorfactory.cs
- TextTreeExtractElementUndoUnit.cs
- SqlTopReducer.cs
- Queue.cs
- RewritingProcessor.cs
- RoutedEventValueSerializer.cs
- XmlILStorageConverter.cs
- CellConstantDomain.cs
- UnionExpr.cs
- ValidatedControlConverter.cs
- MatrixTransform.cs
- PipelineModuleStepContainer.cs
- ViewStateModeByIdAttribute.cs
- DescendentsWalker.cs
- MergeLocalizationDirectives.cs
- AuthorizationRule.cs
- BindingMemberInfo.cs
- MappingException.cs
- TextRange.cs
- Knowncolors.cs
- Subset.cs
- AccessibilityHelperForXpWin2k3.cs
- Roles.cs
- XPathMultyIterator.cs
- ExpressionVisitorHelpers.cs
- ComboBoxItem.cs
- SessionStateModule.cs
- UnsafeNativeMethods.cs
- GeneralTransformGroup.cs
- DataService.cs
- ReflectTypeDescriptionProvider.cs
- BitArray.cs
- FileDetails.cs
- HyperLink.cs
- RegexWriter.cs
- WorkflowExecutor.cs
- ProgressiveCrcCalculatingStream.cs
- DetailsViewUpdateEventArgs.cs
- ServicesUtilities.cs
- KeyFrames.cs
- FormViewRow.cs
- MetadataWorkspace.cs
- Literal.cs
- BufferedGraphics.cs
- XmlChildEnumerator.cs
- ProxyGenerator.cs
- CodeDelegateCreateExpression.cs
- Int64Converter.cs
- MessageHeaderT.cs
- WeakReference.cs
- SelectionEditingBehavior.cs
- XslAst.cs
- StringAnimationBase.cs
- DbConnectionOptions.cs
- MissingMethodException.cs
- Merger.cs
- AsyncStreamReader.cs
- SelectedCellsCollection.cs
- Stack.cs
- DrawingGroupDrawingContext.cs
- HttpWrapper.cs
- AppDomainManager.cs
- ItemCollection.cs
- PowerStatus.cs