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.
    ///  
    ///  
    { 
        // 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
- WindowAutomationPeer.cs
- DispatcherFrame.cs
- ThreadStaticAttribute.cs
- AppLevelCompilationSectionCache.cs
- HashHelper.cs
- QilStrConcatenator.cs
- XslException.cs
- Int32CollectionValueSerializer.cs
- GiveFeedbackEvent.cs
- CompositionTarget.cs
- ServiceMoniker.cs
- CompatibleComparer.cs
- EdmPropertyAttribute.cs
- Enum.cs
- StylusPointPropertyInfoDefaults.cs
- RelationshipDetailsCollection.cs
- RadioButton.cs
- RuleAction.cs
- EntityDataSourceState.cs
- XmlHierarchyData.cs
- ExpressionReplacer.cs
- XdrBuilder.cs
- FormsAuthenticationEventArgs.cs
- Context.cs
- HwndHostAutomationPeer.cs
- CodeDirectoryCompiler.cs
- CapabilitiesSection.cs
- XmlDocumentSchema.cs
- WeakEventManager.cs
- StorageTypeMapping.cs
- CodeTypeMemberCollection.cs
- WindowsSysHeader.cs
- Encoder.cs
- SqlStatistics.cs
- GeneralTransformGroup.cs
- Wizard.cs
- CatalogPartDesigner.cs
- IndexingContentUnit.cs
- ControlPaint.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- METAHEADER.cs
- StorageEntitySetMapping.cs
- ErrorTolerantObjectWriter.cs
- MasterPageParser.cs
- ProjectionCamera.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- RedBlackList.cs
- WebPartAddingEventArgs.cs
- ResourceDescriptionAttribute.cs
- ProtectedConfiguration.cs
- ApplicationManager.cs
- XmlRootAttribute.cs
- PocoPropertyAccessorStrategy.cs
- SessionStateItemCollection.cs
- StateRuntime.cs
- Stackframe.cs
- PeerCustomResolverBindingElement.cs
- ListViewDataItem.cs
- GlyphShapingProperties.cs
- SecurityState.cs
- BindingMemberInfo.cs
- BrushValueSerializer.cs
- EntityExpressionVisitor.cs
- manifestimages.cs
- CategoryAttribute.cs
- DataView.cs
- SqlConnectionHelper.cs
- CalendarDayButton.cs
- DbMetaDataColumnNames.cs
- SineEase.cs
- GenericEnumerator.cs
- x509store.cs
- ReadOnlyCollectionBuilder.cs
- SettingsPropertyWrongTypeException.cs
- SizeF.cs
- PolicyDesigner.cs
- EdmProviderManifest.cs
- DbProviderConfigurationHandler.cs
- ThemeDictionaryExtension.cs
- TextServicesContext.cs
- FloaterBaseParagraph.cs
- SystemWebCachingSectionGroup.cs
- TextStore.cs
- BulletedList.cs
- TextBreakpoint.cs
- UserControlDocumentDesigner.cs
- BulletedList.cs
- SelectionService.cs
- NeutralResourcesLanguageAttribute.cs
- DesignerToolStripControlHost.cs
- OutputScopeManager.cs
- ComAdminWrapper.cs
- ScriptRegistrationManager.cs
- SystemPens.cs
- Help.cs
- WorkflowInstance.cs
- PersonalizationProviderCollection.cs
- PreDigestedSignedInfo.cs
- DataTemplateSelector.cs
- PreservationFileReader.cs