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
- ColumnMapVisitor.cs
- InternalBase.cs
- GrammarBuilderWildcard.cs
- IsolatedStoragePermission.cs
- RadioButtonFlatAdapter.cs
- XmlSchemaImporter.cs
- DataGridViewCheckBoxColumn.cs
- SystemUdpStatistics.cs
- SqlConnectionManager.cs
- QuaternionRotation3D.cs
- Directory.cs
- UnsafeNativeMethods.cs
- OutputCacheProfile.cs
- TableLayout.cs
- InfiniteTimeSpanConverter.cs
- XmlWrappingWriter.cs
- NumberSubstitution.cs
- GenericNameHandler.cs
- ListItemConverter.cs
- RepeatEnumerable.cs
- SqlTopReducer.cs
- Point3DCollectionConverter.cs
- ArithmeticException.cs
- BitmapEffectInputConnector.cs
- DataException.cs
- CacheHelper.cs
- CodeVariableDeclarationStatement.cs
- Resources.Designer.cs
- FileRecordSequenceHelper.cs
- ReferenceEqualityComparer.cs
- Effect.cs
- SqlParameter.cs
- ScrollBarRenderer.cs
- DisposableCollectionWrapper.cs
- DataControlFieldHeaderCell.cs
- EncoderParameters.cs
- BaseDataList.cs
- UpdateException.cs
- ListSortDescriptionCollection.cs
- FunctionDefinition.cs
- BrowserCapabilitiesFactoryBase.cs
- BooleanExpr.cs
- HttpListener.cs
- HashLookup.cs
- ListViewInsertEventArgs.cs
- UrlPath.cs
- WebPartMinimizeVerb.cs
- Span.cs
- DBCSCodePageEncoding.cs
- PeerDuplexChannelListener.cs
- SessionChannels.cs
- PerfService.cs
- WebPartActionVerb.cs
- TextElementCollection.cs
- SendKeys.cs
- PageSetupDialog.cs
- Activity.cs
- IndexedString.cs
- PathGeometry.cs
- PersonalizationStateInfoCollection.cs
- ListItemViewControl.cs
- DateTimeFormatInfo.cs
- CodeIterationStatement.cs
- TextBox.cs
- TemplateControlBuildProvider.cs
- CommonXSendMessage.cs
- QueryOptionExpression.cs
- DefaultEventAttribute.cs
- XmlSchemaDocumentation.cs
- BamlRecords.cs
- TaskFormBase.cs
- WindowsRichEdit.cs
- DataGridPageChangedEventArgs.cs
- EditorResources.cs
- SqlUserDefinedTypeAttribute.cs
- WithStatement.cs
- Selector.cs
- TextRange.cs
- LiteralSubsegment.cs
- DesignColumn.cs
- BulletChrome.cs
- Collection.cs
- TypeRefElement.cs
- SecurityProtocolFactory.cs
- AddInStore.cs
- ToolStripPanelRow.cs
- BitmapEffectDrawingContextState.cs
- PageRequestManager.cs
- TypedDataSourceCodeGenerator.cs
- SHA384Managed.cs
- ObjectItemConventionAssemblyLoader.cs
- IndexedEnumerable.cs
- AdPostCacheSubstitution.cs
- FileNotFoundException.cs
- SchemaTypeEmitter.cs
- ColorConverter.cs
- ProviderCommandInfoUtils.cs
- SpecialFolderEnumConverter.cs
- StrokeNodeData.cs
- sqlstateclientmanager.cs