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
- CodeDelegateInvokeExpression.cs
- xmlglyphRunInfo.cs
- CmsInterop.cs
- MaskedTextBoxTextEditorDropDown.cs
- ToolboxComponentsCreatedEventArgs.cs
- DirectoryInfo.cs
- Content.cs
- CatalogPartChrome.cs
- XmlText.cs
- ReaderWriterLock.cs
- DataGridViewRowHeaderCell.cs
- URIFormatException.cs
- Focus.cs
- safesecurityhelperavalon.cs
- SerializationFieldInfo.cs
- AcceleratedTokenAuthenticator.cs
- SelfSignedCertificate.cs
- FlowDocumentPageViewerAutomationPeer.cs
- FlowNode.cs
- WebHttpEndpointElement.cs
- CommandValueSerializer.cs
- ContextInformation.cs
- MethodToken.cs
- XmlSchemaValidationException.cs
- ProbeMatchesMessage11.cs
- _DynamicWinsockMethods.cs
- ProxyWebPart.cs
- Handle.cs
- AxWrapperGen.cs
- ToolboxItemFilterAttribute.cs
- DoubleIndependentAnimationStorage.cs
- FlowDocumentFormatter.cs
- TimersDescriptionAttribute.cs
- TextEditor.cs
- ClientScriptManager.cs
- MetadataArtifactLoaderCompositeFile.cs
- WorkflowInstanceQuery.cs
- StatusBarItemAutomationPeer.cs
- WebScriptServiceHost.cs
- DesignSurfaceServiceContainer.cs
- CompositeDuplexElement.cs
- LambdaCompiler.Binary.cs
- AssociationType.cs
- HttpModule.cs
- StaticExtension.cs
- AutomationPropertyInfo.cs
- SizeValueSerializer.cs
- GenericEnumerator.cs
- TypeResolvingOptions.cs
- HwndProxyElementProvider.cs
- DataGridComponentEditor.cs
- GeometryModel3D.cs
- TdsRecordBufferSetter.cs
- ParallelQuery.cs
- ColumnMapTranslator.cs
- WindowsAuthenticationModule.cs
- ButtonBaseAdapter.cs
- XmlName.cs
- CodeRemoveEventStatement.cs
- Renderer.cs
- CapabilitiesRule.cs
- CodeArgumentReferenceExpression.cs
- MergeFailedEvent.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- IsolatedStorageFilePermission.cs
- WebPartVerb.cs
- GenericsInstances.cs
- TaskExceptionHolder.cs
- BigInt.cs
- ClientScriptManager.cs
- CollectionChangedEventManager.cs
- DispatcherExceptionEventArgs.cs
- AttributeSetAction.cs
- ListParagraph.cs
- CorrelationToken.cs
- DefaultBindingPropertyAttribute.cs
- DbConnectionPoolGroup.cs
- MarshalByValueComponent.cs
- ColumnCollection.cs
- PropertyChangedEventArgs.cs
- CodeCommentStatement.cs
- httpstaticobjectscollection.cs
- XmlArrayItemAttributes.cs
- DetailsViewDeletedEventArgs.cs
- ConsoleKeyInfo.cs
- DataTable.cs
- ConfigurationValidatorBase.cs
- ConfigurationManagerHelperFactory.cs
- Form.cs
- RequestStatusBarUpdateEventArgs.cs
- ElementProxy.cs
- PocoEntityKeyStrategy.cs
- BamlBinaryReader.cs
- SystemInformation.cs
- CodeRegionDirective.cs
- FontFamily.cs
- RequestBringIntoViewEventArgs.cs
- SyndicationFeed.cs
- ToolBarButtonDesigner.cs