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
- TraceContextEventArgs.cs
- CodeExpressionCollection.cs
- Hashtable.cs
- DataBindingCollection.cs
- AnonymousIdentificationModule.cs
- TransactionChannel.cs
- DoubleLink.cs
- ClientTargetCollection.cs
- ThreadSafeList.cs
- InstanceDescriptor.cs
- MsmqBindingMonitor.cs
- ContextProperty.cs
- IPipelineRuntime.cs
- CodeStatement.cs
- WindowsScrollBar.cs
- XmlSchemaObject.cs
- DecimalAnimationBase.cs
- CSharpCodeProvider.cs
- activationcontext.cs
- Encoder.cs
- XmlUrlResolver.cs
- MergeLocalizationDirectives.cs
- SqlEnums.cs
- DbConnectionOptions.cs
- UnsafeNetInfoNativeMethods.cs
- ServicePointManager.cs
- PublisherMembershipCondition.cs
- FactoryGenerator.cs
- BlobPersonalizationState.cs
- AdapterDictionary.cs
- OutputCacheProfileCollection.cs
- DesignerCommandSet.cs
- TextFragmentEngine.cs
- CustomPopupPlacement.cs
- ItemChangedEventArgs.cs
- Error.cs
- XmlSchemaFacet.cs
- DBDataPermissionAttribute.cs
- XmlDocumentFragment.cs
- AtomServiceDocumentSerializer.cs
- PermissionListSet.cs
- CodePropertyReferenceExpression.cs
- SelectionWordBreaker.cs
- GcSettings.cs
- Permission.cs
- ObfuscateAssemblyAttribute.cs
- QilExpression.cs
- ObjectCloneHelper.cs
- PrtCap_Base.cs
- ContractMethodInfo.cs
- EntityDataSourceContainerNameConverter.cs
- IfElseDesigner.xaml.cs
- StorageEndPropertyMapping.cs
- CallTemplateAction.cs
- XmlSchemaNotation.cs
- QueryPageSettingsEventArgs.cs
- ControlIdConverter.cs
- HostingMessageProperty.cs
- HitTestParameters3D.cs
- WorkflowElementDialog.cs
- PropertyChangingEventArgs.cs
- OleDbCommandBuilder.cs
- RowCache.cs
- PreProcessor.cs
- WebPartDisplayMode.cs
- HtmlEncodedRawTextWriter.cs
- SchemaObjectWriter.cs
- TextSchema.cs
- COM2Enum.cs
- PngBitmapDecoder.cs
- DockAndAnchorLayout.cs
- OrderedDictionary.cs
- EmptyEnumerable.cs
- ReflectEventDescriptor.cs
- shaperfactoryquerycacheentry.cs
- RegexEditorDialog.cs
- PostBackOptions.cs
- LocalizationParserHooks.cs
- PointF.cs
- basevalidator.cs
- EventLogTraceListener.cs
- BindingListCollectionView.cs
- EditorBrowsableAttribute.cs
- basecomparevalidator.cs
- SQLMoneyStorage.cs
- QueueProcessor.cs
- StaticDataManager.cs
- CollectionViewGroup.cs
- PathHelper.cs
- Completion.cs
- Internal.cs
- GeometryDrawing.cs
- ExecutedRoutedEventArgs.cs
- ColumnMapCopier.cs
- WorkflowApplicationIdleEventArgs.cs
- SqlFlattener.cs
- TransactionsSectionGroup.cs
- ValidationErrorCollection.cs
- XPathSelectionIterator.cs
- XdrBuilder.cs