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
- PropertyInfoSet.cs
- ObjectKeyFrameCollection.cs
- CompilerParameters.cs
- FormatSettings.cs
- FormViewPagerRow.cs
- DataGridItem.cs
- RelationalExpressions.cs
- StringConverter.cs
- VisualTreeHelper.cs
- SqlTypeSystemProvider.cs
- ToolStripSystemRenderer.cs
- DescendantBaseQuery.cs
- SecurityDescriptor.cs
- WebRequestModuleElement.cs
- BamlMapTable.cs
- DomNameTable.cs
- ColumnMapProcessor.cs
- Soap.cs
- LogPolicy.cs
- MergeEnumerator.cs
- SqlReorderer.cs
- CfgParser.cs
- SmiMetaData.cs
- StrongTypingException.cs
- StreamSecurityUpgradeInitiator.cs
- DataGridViewLinkCell.cs
- NameValueCollection.cs
- HostingEnvironment.cs
- CaseInsensitiveHashCodeProvider.cs
- CompiledXpathExpr.cs
- SystemResourceHost.cs
- CategoryNameCollection.cs
- XmlObjectSerializerReadContext.cs
- PropertyGridView.cs
- Attributes.cs
- Dictionary.cs
- CompiledELinqQueryState.cs
- OracleEncoding.cs
- IsolatedStorageFilePermission.cs
- PaintEvent.cs
- SoapReflector.cs
- DropShadowBitmapEffect.cs
- XPathMessageFilterElementComparer.cs
- DBSqlParserTable.cs
- PropertyKey.cs
- SourceLineInfo.cs
- ErrorFormatterPage.cs
- TreeView.cs
- UrlMapping.cs
- EdmItemCollection.cs
- WebPartMinimizeVerb.cs
- FormsAuthenticationUserCollection.cs
- XMLDiffLoader.cs
- EventSinkHelperWriter.cs
- ProbeMatchesMessageCD1.cs
- ComponentEditorForm.cs
- Win32Exception.cs
- DataGridItemCollection.cs
- MappingModelBuildProvider.cs
- SiteMapPath.cs
- ZoomingMessageFilter.cs
- Tool.cs
- ObjectListFieldsPage.cs
- WindowsEditBox.cs
- PixelFormatConverter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- EntityContainerAssociationSet.cs
- Semaphore.cs
- SafeSystemMetrics.cs
- validationstate.cs
- PropertyItem.cs
- RtfToXamlReader.cs
- RadioButton.cs
- SourceExpressionException.cs
- SelectionService.cs
- DataMemberConverter.cs
- Completion.cs
- HotSpot.cs
- HttpApplicationFactory.cs
- RecipientInfo.cs
- DocumentReference.cs
- EmptyImpersonationContext.cs
- MiniAssembly.cs
- URLAttribute.cs
- SchemaInfo.cs
- PkcsUtils.cs
- ResXResourceWriter.cs
- ETagAttribute.cs
- PageWrapper.cs
- WorkflowNamespace.cs
- InnerItemCollectionView.cs
- MappingSource.cs
- ExceptionUtil.cs
- CompoundFileStreamReference.cs
- Misc.cs
- DesignerCategoryAttribute.cs
- ListItemParagraph.cs
- ParameterRetriever.cs
- DataBindingCollectionEditor.cs
- ZipIOCentralDirectoryDigitalSignature.cs