Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Utils / ListChunk.cs / 1305376 / ListChunk.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // ListChunk.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.Linq.Parallel { ////// A linked list of array chunks. Allows direct access to its arrays. /// ///The elements held within. internal class ListChunk: IEnumerable { internal TInputOutput[] m_chunk; private int m_chunkCount; private ListChunk m_nextChunk; private ListChunk m_tailChunk; /// /// Allocates a new root chunk of a particular size. /// internal ListChunk(int size) { Contract.Assert(size > 0); m_chunk = new TInputOutput[size]; m_chunkCount = 0; m_tailChunk = this; } ////// Adds an element to this chunk. Only ever called on the root. /// /// The new element. internal void Add(TInputOutput e) { ListChunktail = m_tailChunk; if (tail.m_chunkCount == tail.m_chunk.Length) { m_tailChunk = new ListChunk (tail.m_chunkCount * 2); tail = (tail.m_nextChunk = m_tailChunk); } tail.m_chunk[tail.m_chunkCount++] = e; } /// /// The next chunk in the linked chain. /// internal ListChunkNext { get { return m_nextChunk; } } /// /// The number of elements contained within this particular chunk. /// internal int Count { get { return m_chunkCount; } } ////// Fetches an enumerator to walk the elements in all chunks rooted from this one. /// public IEnumeratorGetEnumerator() { ListChunk curr = this; while (curr != null) { for (int i = 0; i < curr.m_chunkCount; i++) { yield return curr.m_chunk[i]; } Contract.Assert(curr.m_chunkCount == curr.m_chunk.Length || curr.m_nextChunk == null); curr = curr.m_nextChunk; } } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return ((IEnumerable )this).GetEnumerator(); } } } // 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
- AdRotator.cs
- BinaryMethodMessage.cs
- ComboBoxAutomationPeer.cs
- HtmlInputHidden.cs
- Socket.cs
- ConfigurationSchemaErrors.cs
- DataSourceExpressionCollection.cs
- JpegBitmapEncoder.cs
- WsatServiceCertificate.cs
- GridViewColumnHeaderAutomationPeer.cs
- ReferenceEqualityComparer.cs
- DiffuseMaterial.cs
- QueueProcessor.cs
- _emptywebproxy.cs
- CancellationTokenRegistration.cs
- ListControl.cs
- EnumMember.cs
- TokenBasedSetEnumerator.cs
- SynchronizedMessageSource.cs
- LocationReferenceEnvironment.cs
- BadImageFormatException.cs
- basevalidator.cs
- WeakReferenceEnumerator.cs
- XmlMemberMapping.cs
- DataServiceKeyAttribute.cs
- SelectedGridItemChangedEvent.cs
- ArrayListCollectionBase.cs
- LinkedList.cs
- HtmlTableRowCollection.cs
- DbBuffer.cs
- FillBehavior.cs
- RequiredAttributeAttribute.cs
- Matrix3DValueSerializer.cs
- XmlDocumentViewSchema.cs
- ByteStream.cs
- ProtectedConfiguration.cs
- HighlightComponent.cs
- BindingMemberInfo.cs
- PackageRelationshipCollection.cs
- BaseHashHelper.cs
- TemplateField.cs
- Helpers.cs
- RoutedEvent.cs
- ProxyAttribute.cs
- MetadataWorkspace.cs
- sqlinternaltransaction.cs
- TrackingMemoryStreamFactory.cs
- OracleCommand.cs
- InkPresenterAutomationPeer.cs
- SchemaSetCompiler.cs
- ToolStripDropDown.cs
- RepeatBehavior.cs
- ObjectDataSourceView.cs
- ContextMenu.cs
- SqlNodeAnnotation.cs
- GroupItemAutomationPeer.cs
- SponsorHelper.cs
- MediaContextNotificationWindow.cs
- PointAnimation.cs
- DirectoryInfo.cs
- DataGridTableStyleMappingNameEditor.cs
- MD5.cs
- RowSpanVector.cs
- PersistenceTypeAttribute.cs
- EventPropertyMap.cs
- GeneralTransform2DTo3DTo2D.cs
- CodeSnippetCompileUnit.cs
- DataTemplateSelector.cs
- DisposableCollectionWrapper.cs
- TreeNodeSelectionProcessor.cs
- StringFormat.cs
- SelectionProcessor.cs
- HttpGetProtocolReflector.cs
- GridSplitter.cs
- WindowVisualStateTracker.cs
- JapaneseCalendar.cs
- OdbcConnectionOpen.cs
- PenThreadWorker.cs
- TraversalRequest.cs
- BufferModeSettings.cs
- GcSettings.cs
- AddingNewEventArgs.cs
- EnumerableValidator.cs
- QilVisitor.cs
- FunctionDetailsReader.cs
- BindingOperations.cs
- PointCollection.cs
- RegularExpressionValidator.cs
- Identifier.cs
- MessageQueueTransaction.cs
- DiscoveryEndpointValidator.cs
- ListBox.cs
- ProcessHost.cs
- TdsParserStaticMethods.cs
- precedingsibling.cs
- OleCmdHelper.cs
- WsdlBuildProvider.cs
- COM2EnumConverter.cs
- WindowsScroll.cs
- DelayedRegex.cs