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
- HopperCache.cs
- GeometryHitTestParameters.cs
- AdapterUtil.cs
- CSharpCodeProvider.cs
- Polygon.cs
- _AutoWebProxyScriptEngine.cs
- StreamUpdate.cs
- SourceSwitch.cs
- BaseParaClient.cs
- RegistrationServices.cs
- ConfigurationSection.cs
- RelationalExpressions.cs
- UriScheme.cs
- Model3D.cs
- UserNamePasswordServiceCredential.cs
- DataContractSerializerSection.cs
- ArrayConverter.cs
- HttpResponseHeader.cs
- ExpressionWriter.cs
- EntityDataReader.cs
- CodeThrowExceptionStatement.cs
- TablePattern.cs
- CodeCommentStatement.cs
- x509store.cs
- ToolStripPanelRow.cs
- DesignerForm.cs
- TextBoxDesigner.cs
- HttpCookie.cs
- Timer.cs
- UiaCoreTypesApi.cs
- GridViewRow.cs
- JsonReaderWriterFactory.cs
- CurrentChangingEventArgs.cs
- XmlSerializerSection.cs
- SizeF.cs
- HandledEventArgs.cs
- RemotingClientProxy.cs
- DirectionalAction.cs
- TypeNameHelper.cs
- SurrogateEncoder.cs
- CompareValidator.cs
- RadioButton.cs
- JsonDeserializer.cs
- SHA384CryptoServiceProvider.cs
- MachinePropertyVariants.cs
- StyleSheetComponentEditor.cs
- EncodingDataItem.cs
- SpanIndex.cs
- HttpModuleActionCollection.cs
- WebRequest.cs
- DataGridTextBox.cs
- ApplicationManager.cs
- Geometry3D.cs
- Peer.cs
- ProfileServiceManager.cs
- CalendarDataBindingHandler.cs
- DbParameterCollectionHelper.cs
- AdvancedBindingPropertyDescriptor.cs
- GridViewColumnCollectionChangedEventArgs.cs
- FocusTracker.cs
- DoubleCollection.cs
- BrowserDefinitionCollection.cs
- SqlDependency.cs
- AuthenticationSection.cs
- LoginView.cs
- mediaclock.cs
- XmlSchemaSimpleTypeUnion.cs
- IssuanceLicense.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- VirtualPathUtility.cs
- EnterpriseServicesHelper.cs
- FileStream.cs
- DataSetMappper.cs
- DataServiceRequestOfT.cs
- CardSpaceException.cs
- AssemblyCollection.cs
- LoginAutoFormat.cs
- ToolStripMenuItem.cs
- XpsImageSerializationService.cs
- AutoGeneratedField.cs
- EntitySqlQueryBuilder.cs
- ColumnMapTranslator.cs
- DefinitionBase.cs
- BooleanAnimationBase.cs
- SplitContainer.cs
- TextEditorTyping.cs
- Function.cs
- UidManager.cs
- FilterEventArgs.cs
- FtpRequestCacheValidator.cs
- precedingquery.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- WebPartDeleteVerb.cs
- QuaternionAnimation.cs
- CodeObjectCreateExpression.cs
- DispatchWrapper.cs
- GeneralTransform.cs
- InputEventArgs.cs
- dsa.cs
- CmsInterop.cs