Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / QueryOperators / QueryOperatorEnumerator.cs / 1305376 / QueryOperatorEnumerator.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//
// QueryOperatorEnumerator.cs
//
// [....]
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
namespace System.Linq.Parallel
{
///
/// A common enumerator type that unifies all query operator enumerators.
///
///
///
internal abstract class QueryOperatorEnumerator
{
// Moves the position of the enumerator forward by one, and simultaneously returns
// the (new) current element and key. If empty, false is returned.
internal abstract bool MoveNext(ref TElement currentElement, ref TKey currentKey);
// Standard implementation of the disposable pattern.
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
// This is a no-op by default. Subclasses can override.
}
internal virtual void Reset()
{
// This is a no-op by default. Subclasses can override.
}
//------------------------------------------------------------------------------------
// A simple way to turn a query operator enumerator into a "classic" one.
//
internal IEnumerator AsClassicEnumerator()
{
return new QueryOperatorClassicEnumerator(this);
}
class QueryOperatorClassicEnumerator : IEnumerator
{
private QueryOperatorEnumerator m_operatorEnumerator;
private TElement m_current;
internal QueryOperatorClassicEnumerator(QueryOperatorEnumerator operatorEnumerator)
{
Contract.Assert(operatorEnumerator != null);
m_operatorEnumerator = operatorEnumerator;
}
public bool MoveNext()
{
TKey keyUnused = default(TKey);
return m_operatorEnumerator.MoveNext(ref m_current, ref keyUnused);
}
public TElement Current
{
get { return m_current; }
}
object IEnumerator.Current
{
get { return m_current; }
}
public void Dispose()
{
m_operatorEnumerator.Dispose();
m_operatorEnumerator = null;
}
public void Reset()
{
m_operatorEnumerator.Reset();
}
}
}
}
// 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
- TextEditorSelection.cs
- VirtualizingStackPanel.cs
- SQLMembershipProvider.cs
- StrongNamePublicKeyBlob.cs
- BamlTreeNode.cs
- StatusBar.cs
- ColumnResizeAdorner.cs
- SocketPermission.cs
- Regex.cs
- ReachIDocumentPaginatorSerializer.cs
- XmlChildNodes.cs
- CacheEntry.cs
- Timer.cs
- HtmlInputImage.cs
- Claim.cs
- DictionaryBase.cs
- PrimarySelectionAdorner.cs
- InputScopeConverter.cs
- MenuItemCollection.cs
- OleDbError.cs
- FtpWebRequest.cs
- StringArrayConverter.cs
- EmissiveMaterial.cs
- GenericRootAutomationPeer.cs
- GetWorkflowTree.cs
- XdrBuilder.cs
- GridProviderWrapper.cs
- InvokeWebService.cs
- clipboard.cs
- FreezableCollection.cs
- ApplicationId.cs
- BrowserDefinitionCollection.cs
- ResourceAssociationSet.cs
- DirectoryObjectSecurity.cs
- SkinBuilder.cs
- Geometry3D.cs
- FilterException.cs
- SelectionProviderWrapper.cs
- FillRuleValidation.cs
- NotifyInputEventArgs.cs
- PaginationProgressEventArgs.cs
- CompoundFileDeflateTransform.cs
- WithStatement.cs
- CommonBehaviorsSection.cs
- WebPartConnection.cs
- DataGridViewCellStateChangedEventArgs.cs
- WmlValidationSummaryAdapter.cs
- OrderedEnumerableRowCollection.cs
- GenericsInstances.cs
- ConnectionPointCookie.cs
- glyphs.cs
- UTF32Encoding.cs
- XPathDocumentBuilder.cs
- RemoteArgument.cs
- Label.cs
- SetterBaseCollection.cs
- MultiTrigger.cs
- InvokeMethodDesigner.xaml.cs
- MediaContext.cs
- SkinBuilder.cs
- DataObjectAttribute.cs
- ReplacementText.cs
- AddInActivator.cs
- DataGridViewCellParsingEventArgs.cs
- SiteMapNode.cs
- DetailsViewCommandEventArgs.cs
- ServiceNotStartedException.cs
- RegularExpressionValidator.cs
- unsafenativemethodstextservices.cs
- BuildProviderAppliesToAttribute.cs
- ModifierKeysConverter.cs
- SelectingProviderEventArgs.cs
- StringDictionaryCodeDomSerializer.cs
- PropertyPathWorker.cs
- Crypto.cs
- AnimationTimeline.cs
- ObjectRef.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- DesignerCategoryAttribute.cs
- OleDbPropertySetGuid.cs
- BindableTemplateBuilder.cs
- ThreadStaticAttribute.cs
- ConfigurationPropertyAttribute.cs
- DeploymentSection.cs
- BroadcastEventHelper.cs
- EdmPropertyAttribute.cs
- SchemaEntity.cs
- TcpProcessProtocolHandler.cs
- EntityReference.cs
- CodeDomSerializerBase.cs
- PageParserFilter.cs
- MarkupWriter.cs
- Geometry3D.cs
- AspNetSynchronizationContext.cs
- CodeSnippetExpression.cs
- WebPartConnectionCollection.cs
- EntitySqlQueryCacheEntry.cs
- EdmPropertyAttribute.cs
- MappingItemCollection.cs
- DataTableNewRowEvent.cs