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
- FolderBrowserDialog.cs
- ManagementScope.cs
- NTAccount.cs
- columnmapfactory.cs
- WebPartConnectionsConnectVerb.cs
- TypeUsageBuilder.cs
- HtmlControlPersistable.cs
- HtmlTextBoxAdapter.cs
- EventDriven.cs
- TrackingDataItemValue.cs
- WsiProfilesElement.cs
- AttributeData.cs
- ProtocolsConfigurationHandler.cs
- Label.cs
- ObjectDisposedException.cs
- ParallelForEach.cs
- CodeDOMUtility.cs
- FixedHyperLink.cs
- Point.cs
- AmbientProperties.cs
- XmlWrappingReader.cs
- JpegBitmapEncoder.cs
- EventMappingSettingsCollection.cs
- ZipFileInfoCollection.cs
- AdobeCFFWrapper.cs
- ServiceModelSectionGroup.cs
- OdbcConnectionFactory.cs
- PagesSection.cs
- RegionIterator.cs
- ObfuscationAttribute.cs
- WebPartHeaderCloseVerb.cs
- VirtualDirectoryMapping.cs
- InvalidProgramException.cs
- RenderCapability.cs
- Stackframe.cs
- _BufferOffsetSize.cs
- Point3DAnimation.cs
- MessageSecurityOverMsmq.cs
- XmlNode.cs
- JsonReader.cs
- MemberRelationshipService.cs
- DrawTreeNodeEventArgs.cs
- SymbolType.cs
- CompilationUtil.cs
- LogEntrySerializer.cs
- SHA256Managed.cs
- AnnotationMap.cs
- TextRange.cs
- ErrorWrapper.cs
- Cursors.cs
- OracleInfoMessageEventArgs.cs
- AdPostCacheSubstitution.cs
- StringToken.cs
- WCFBuildProvider.cs
- PropertyStore.cs
- TreeViewCancelEvent.cs
- QilVisitor.cs
- DesignTimeType.cs
- AnimationLayer.cs
- FilterUserControlBase.cs
- XmlAtomicValue.cs
- BeginCreateSecurityTokenRequest.cs
- NavigationProperty.cs
- GeneralTransform3D.cs
- SettingsPropertyIsReadOnlyException.cs
- DataGridTable.cs
- DynamicControl.cs
- FileLoadException.cs
- IdentityModelDictionary.cs
- EdmSchemaError.cs
- BuildDependencySet.cs
- EditorZoneAutoFormat.cs
- FigureParagraph.cs
- FlowDocumentScrollViewer.cs
- WebBrowsableAttribute.cs
- CollectionViewGroupInternal.cs
- XmlUrlEditor.cs
- WindowsListView.cs
- BuildManagerHost.cs
- SerializationStore.cs
- SelectedDatesCollection.cs
- ASCIIEncoding.cs
- ClientApiGenerator.cs
- ResetableIterator.cs
- HWStack.cs
- DesignerAdapterAttribute.cs
- EventItfInfo.cs
- CheckBoxRenderer.cs
- BamlTreeUpdater.cs
- WebBrowserHelper.cs
- ProcessManager.cs
- HttpWebRequest.cs
- XmlWrappingWriter.cs
- SoapTransportImporter.cs
- HttpStreams.cs
- GPRECTF.cs
- Run.cs
- ThreadInterruptedException.cs
- ValueChangedEventManager.cs
- Mutex.cs