Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- DefaultAssemblyResolver.cs
- DataGridColumnsPage.cs
- AVElementHelper.cs
- RootBrowserWindow.cs
- EntryPointNotFoundException.cs
- DataAccessException.cs
- HttpCacheVary.cs
- FileSystemInfo.cs
- CapacityStreamGeometryContext.cs
- Process.cs
- ExtentKey.cs
- RemoteWebConfigurationHostStream.cs
- RadioButton.cs
- TableItemProviderWrapper.cs
- FrameworkContentElement.cs
- TextBox.cs
- InputMethodStateTypeInfo.cs
- ApplicationFileParser.cs
- DocumentStatusResources.cs
- CodeSnippetStatement.cs
- PropertyItem.cs
- AppPool.cs
- EmissiveMaterial.cs
- WrappedIUnknown.cs
- SqlCommandSet.cs
- RelatedPropertyManager.cs
- TextRunTypographyProperties.cs
- SchemaTypeEmitter.cs
- SEHException.cs
- SectionXmlInfo.cs
- ResourceKey.cs
- CallContext.cs
- X509Utils.cs
- VisualCollection.cs
- PersonalizationProviderCollection.cs
- PublisherMembershipCondition.cs
- GridViewDeletedEventArgs.cs
- MessageDecoder.cs
- ResetableIterator.cs
- BevelBitmapEffect.cs
- EntityStoreSchemaGenerator.cs
- PeerResolver.cs
- ResXResourceSet.cs
- StructuredTypeEmitter.cs
- CodeExporter.cs
- HwndSubclass.cs
- TreeNodeBinding.cs
- ExpandedProjectionNode.cs
- TrustManagerMoreInformation.cs
- CharEntityEncoderFallback.cs
- _Rfc2616CacheValidators.cs
- SmtpCommands.cs
- StoreItemCollection.cs
- UIElementParaClient.cs
- FederatedMessageSecurityOverHttp.cs
- UnionCodeGroup.cs
- EntitySqlException.cs
- DesignerDataTableBase.cs
- XPathNodeIterator.cs
- TakeOrSkipQueryOperator.cs
- PackageStore.cs
- EntityDataSourceState.cs
- IndexedGlyphRun.cs
- EditBehavior.cs
- DataListItemEventArgs.cs
- ConnectorRouter.cs
- LoadItemsEventArgs.cs
- DataTablePropertyDescriptor.cs
- ProcessStartInfo.cs
- FontDifferentiator.cs
- ImageConverter.cs
- XmlnsCache.cs
- ObjectDisposedException.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ListViewItemSelectionChangedEvent.cs
- Image.cs
- WorkflowQueue.cs
- TypeElement.cs
- EpmCustomContentWriterNodeData.cs
- TraceFilter.cs
- SessionIDManager.cs
- ToolBar.cs
- ClientTargetSection.cs
- TableCellCollection.cs
- Trustee.cs
- _FtpDataStream.cs
- _CookieModule.cs
- DesignSurfaceEvent.cs
- SchemaTypeEmitter.cs
- XmlSerializationGeneratedCode.cs
- Vector.cs
- VariableModifiersHelper.cs
- GridViewRowEventArgs.cs
- OleDbRowUpdatedEvent.cs
- TimeoutException.cs
- BitmapDownload.cs
- EventItfInfo.cs
- ObjectContext.cs
- CodeLinePragma.cs
- Funcletizer.cs