Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- KeyProperty.cs
- UnSafeCharBuffer.cs
- XsltException.cs
- MDIClient.cs
- WebPartConnectionsConnectVerb.cs
- StringTraceRecord.cs
- XAMLParseException.cs
- InteropAutomationProvider.cs
- PtsHelper.cs
- GridViewUpdatedEventArgs.cs
- MobileControlPersister.cs
- ParameterToken.cs
- HttpApplication.cs
- WindowsTooltip.cs
- HttpListenerPrefixCollection.cs
- AuthenticationSection.cs
- WebPartZoneBase.cs
- XmlWrappingReader.cs
- BridgeDataRecord.cs
- XmlReflectionImporter.cs
- OdbcConnection.cs
- Internal.cs
- DataSpaceManager.cs
- EncryptedXml.cs
- TraceXPathNavigator.cs
- SqlGatherConsumedAliases.cs
- ActiveXHost.cs
- AspNetSynchronizationContext.cs
- DeploymentExceptionMapper.cs
- OutputCacheProfile.cs
- ScrollBarAutomationPeer.cs
- ListViewSortEventArgs.cs
- Win32.cs
- TableLayoutPanelCellPosition.cs
- Rect.cs
- HtmlInputPassword.cs
- ObjectStateEntryDbDataRecord.cs
- HttpClientProtocol.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- CorrelationQuery.cs
- TabPage.cs
- MouseCaptureWithinProperty.cs
- PathSegmentCollection.cs
- X509ChainElement.cs
- SqlRowUpdatedEvent.cs
- XPathSelectionIterator.cs
- IERequestCache.cs
- DataSetUtil.cs
- BitmapInitialize.cs
- MdbDataFileEditor.cs
- JsonFormatReaderGenerator.cs
- RangeValidator.cs
- InputEventArgs.cs
- MimeMapping.cs
- WpfSharedBamlSchemaContext.cs
- CounterSample.cs
- UInt64Storage.cs
- TextRangeEdit.cs
- XmlRawWriter.cs
- Point.cs
- MouseButtonEventArgs.cs
- MessageEnumerator.cs
- PieceDirectory.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- ProviderException.cs
- _UncName.cs
- DateTime.cs
- Authorization.cs
- DataGridHelper.cs
- TdsParserStaticMethods.cs
- Translator.cs
- ClientBuildManagerCallback.cs
- Helper.cs
- DiscoveryDocumentReference.cs
- MessageQueuePermissionAttribute.cs
- X509CertificateStore.cs
- webbrowsersite.cs
- NameSpaceEvent.cs
- Rotation3DKeyFrameCollection.cs
- AssemblyCollection.cs
- InputLanguageSource.cs
- AssemblyCache.cs
- MetadataPropertyAttribute.cs
- NativeMethods.cs
- IdentitySection.cs
- Symbol.cs
- infer.cs
- ComponentChangingEvent.cs
- MouseActionValueSerializer.cs
- DataColumnPropertyDescriptor.cs
- AddInIpcChannel.cs
- TypeExtensions.cs
- CommandManager.cs
- WCFServiceClientProxyGenerator.cs
- OrCondition.cs
- InputScopeManager.cs
- ServiceEndpointElementCollection.cs
- ToolboxDataAttribute.cs
- CommandBinding.cs
- ProcessHostServerConfig.cs