Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / QueryOperators / Inlined / InlinedAggregationOperatorEnumerator.cs / 1305376 / InlinedAggregationOperatorEnumerator.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // InlinedAggregationOperatorEnumerator.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Threading; namespace System.Linq.Parallel { //---------------------------------------------------------------------------------------- // Inlined aggregate operators for finding the min/max values for primitives (int, long, float, // double, decimal). Versions are also offered for the nullable primitives (int?, long?, float?, // double?, decimal?), which differ slightly in behavior: they return a null value for empty // streams, whereas the ordinary primitive versions throw. // //--------------------------------------------------------------------------------------- // Inlined average operators for primitives (int, long, float, double, decimal), and the // nullable variants. The difference between the nromal and nullable variety is that // nulls are skipped in tallying the count and sum for the average. // ////// A class with some shared implementation between all aggregation enumerators. /// ///internal abstract class InlinedAggregationOperatorEnumerator : QueryOperatorEnumerator { private int m_partitionIndex; // This partition's unique index. protected CancellationToken m_cancellationToken; //--------------------------------------------------------------------------------------- // Instantiates a new aggregation operator. // internal InlinedAggregationOperatorEnumerator(int partitionIndex, CancellationToken cancellationToken) { m_partitionIndex = partitionIndex; m_cancellationToken = cancellationToken; } //--------------------------------------------------------------------------------------- // Tallies up the sum of the underlying data source, walking the entire thing the first // time MoveNext is called on this object. There is a boilerplate variant used by callers, // and then one that is used for extensibility by subclasses. // internal sealed override bool MoveNext(ref TIntermediate currentElement, ref int currentKey) { if (MoveNextCore(ref currentElement)) { // A reduction's "index" is the same as its partition number. currentKey = m_partitionIndex; return true; } return false; } protected abstract bool MoveNextCore(ref TIntermediate currentElement); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // InlinedAggregationOperatorEnumerator.cs // // [....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Threading; namespace System.Linq.Parallel { //---------------------------------------------------------------------------------------- // Inlined aggregate operators for finding the min/max values for primitives (int, long, float, // double, decimal). Versions are also offered for the nullable primitives (int?, long?, float?, // double?, decimal?), which differ slightly in behavior: they return a null value for empty // streams, whereas the ordinary primitive versions throw. // //--------------------------------------------------------------------------------------- // Inlined average operators for primitives (int, long, float, double, decimal), and the // nullable variants. The difference between the nromal and nullable variety is that // nulls are skipped in tallying the count and sum for the average. // ////// A class with some shared implementation between all aggregation enumerators. /// ///internal abstract class InlinedAggregationOperatorEnumerator : QueryOperatorEnumerator { private int m_partitionIndex; // This partition's unique index. protected CancellationToken m_cancellationToken; //--------------------------------------------------------------------------------------- // Instantiates a new aggregation operator. // internal InlinedAggregationOperatorEnumerator(int partitionIndex, CancellationToken cancellationToken) { m_partitionIndex = partitionIndex; m_cancellationToken = cancellationToken; } //--------------------------------------------------------------------------------------- // Tallies up the sum of the underlying data source, walking the entire thing the first // time MoveNext is called on this object. There is a boilerplate variant used by callers, // and then one that is used for extensibility by subclasses. // internal sealed override bool MoveNext(ref TIntermediate currentElement, ref int currentKey) { if (MoveNextCore(ref currentElement)) { // A reduction's "index" is the same as its partition number. currentKey = m_partitionIndex; return true; } return false; } protected abstract bool MoveNextCore(ref TIntermediate currentElement); } } // 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
- FileDialog.cs
- Int64Converter.cs
- Events.cs
- _NestedSingleAsyncResult.cs
- Cursor.cs
- SchemaType.cs
- KnownBoxes.cs
- PageCodeDomTreeGenerator.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- TableCellAutomationPeer.cs
- ProtocolsConfigurationHandler.cs
- CalendarDay.cs
- SamlAdvice.cs
- XmlDictionaryString.cs
- RegexCode.cs
- XmlSerializableServices.cs
- Int32KeyFrameCollection.cs
- RowType.cs
- TrackingLocation.cs
- XmlExtensionFunction.cs
- HMACMD5.cs
- TagMapInfo.cs
- HotSpotCollection.cs
- DataGridViewColumnHeaderCell.cs
- MeasureItemEvent.cs
- KeyTime.cs
- SoapSchemaImporter.cs
- SqlPersonalizationProvider.cs
- RoutedEventHandlerInfo.cs
- SqlProviderServices.cs
- DataGridViewCellMouseEventArgs.cs
- XmlDataDocument.cs
- ThemeDictionaryExtension.cs
- ITreeGenerator.cs
- RayMeshGeometry3DHitTestResult.cs
- HttpCookiesSection.cs
- ManagementDateTime.cs
- DataGridViewCellLinkedList.cs
- NgenServicingAttributes.cs
- externdll.cs
- NotifyCollectionChangedEventArgs.cs
- RtType.cs
- ListControlBuilder.cs
- Matrix.cs
- ConfigurationProperty.cs
- StaticFileHandler.cs
- WindowsNonControl.cs
- KnownIds.cs
- FixedSOMTextRun.cs
- QueryTask.cs
- LabelLiteral.cs
- ErrorHandler.cs
- InvokeMethod.cs
- ParameterToken.cs
- WebProxyScriptElement.cs
- GroupBoxAutomationPeer.cs
- RadioButton.cs
- ProfileService.cs
- XmlLoader.cs
- SqlDataSource.cs
- Html32TextWriter.cs
- TargetInvocationException.cs
- recordstatefactory.cs
- AnnotationService.cs
- MemoryFailPoint.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- Timeline.cs
- String.cs
- TextServicesCompartmentEventSink.cs
- SessionStateSection.cs
- RelationshipType.cs
- GroupQuery.cs
- ReflectionServiceProvider.cs
- GACIdentityPermission.cs
- InheritanceContextChangedEventManager.cs
- KerberosSecurityTokenAuthenticator.cs
- TrailingSpaceComparer.cs
- RewritingPass.cs
- State.cs
- PolyQuadraticBezierSegment.cs
- ImageCollectionEditor.cs
- SHA1CryptoServiceProvider.cs
- VersionPair.cs
- FocusTracker.cs
- SoapServerMethod.cs
- DemultiplexingClientMessageFormatter.cs
- XamlVector3DCollectionSerializer.cs
- Operator.cs
- WindowsToolbarAsMenu.cs
- SystemIPGlobalProperties.cs
- Monitor.cs
- DiscardableAttribute.cs
- SqlDataSourceCache.cs
- PolicyLevel.cs
- Canvas.cs
- TypeDescriptionProvider.cs
- TreeSet.cs
- GenericWebPart.cs
- OleDbException.cs
- HelpEvent.cs