Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / QueryMath.cs / 1 / QueryMath.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{
using System.Collections;
using System.Diagnostics;
internal enum MathOperator
{
None,
Plus,
Minus,
Div,
Multiply,
Mod,
Negate
}
internal class MathOpcode : Opcode
{
MathOperator mathOp;
internal MathOpcode(OpcodeID id, MathOperator op)
: base(id)
{
this.mathOp = op;
}
internal override bool Equals(Opcode op)
{
if (base.Equals(op))
{
return (this.mathOp == ((MathOpcode) op).mathOp);
}
return false;
}
#if DEBUG_FILTER
public override string ToString()
{
return string.Format("{0} {1}", base.ToString(), this.mathOp.ToString());
}
#endif
}
internal class PlusOpcode : MathOpcode
{
internal PlusOpcode()
: base(OpcodeID.Plus, MathOperator.Plus)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame argX = context.TopArg;
StackFrame argY = context.SecondArg;
DiagnosticUtility.DebugAssert(argX.Count == argY.Count, "");
Value[] values = context.Values;
for (int x = argX.basePtr, y = argY.basePtr; x <= argX.endPtr; ++x, ++y)
{
DiagnosticUtility.DebugAssert(values[x].IsType(ValueDataType.Double), "");
DiagnosticUtility.DebugAssert(values[y].IsType(ValueDataType.Double), "");
values[y].Add(values[x].Double);
}
context.PopFrame();
return this.next;
}
}
internal class MinusOpcode : MathOpcode
{
internal MinusOpcode()
: base(OpcodeID.Minus, MathOperator.Minus)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame argX = context.TopArg;
StackFrame argY = context.SecondArg;
DiagnosticUtility.DebugAssert(argX.Count == argY.Count, "");
Value[] values = context.Values;
for (int x = argX.basePtr, y = argY.basePtr; x <= argX.endPtr; ++x, ++y)
{
DiagnosticUtility.DebugAssert(values[x].IsType(ValueDataType.Double), "");
DiagnosticUtility.DebugAssert(values[y].IsType(ValueDataType.Double), "");
values[y].Double = values[x].Double - values[y].Double;
}
context.PopFrame();
return this.next;
}
}
internal class MultiplyOpcode : MathOpcode
{
internal MultiplyOpcode()
: base(OpcodeID.Multiply, MathOperator.Multiply)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame argX = context.TopArg;
StackFrame argY = context.SecondArg;
DiagnosticUtility.DebugAssert(argX.Count == argY.Count, "");
Value[] values = context.Values;
for (int x = argX.basePtr, y = argY.basePtr; x <= argX.endPtr; ++x, ++y)
{
DiagnosticUtility.DebugAssert(values[x].IsType(ValueDataType.Double), "");
DiagnosticUtility.DebugAssert(values[y].IsType(ValueDataType.Double), "");
values[y].Multiply(values[x].Double);
}
context.PopFrame();
return this.next;
}
}
internal class DivideOpcode : MathOpcode
{
internal DivideOpcode()
: base(OpcodeID.Divide, MathOperator.Div)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame argX = context.TopArg;
StackFrame argY = context.SecondArg;
DiagnosticUtility.DebugAssert(argX.Count == argY.Count, "");
Value[] values = context.Values;
for (int x = argX.basePtr, y = argY.basePtr; x <= argX.endPtr; ++x, ++y)
{
DiagnosticUtility.DebugAssert(values[x].IsType(ValueDataType.Double), "");
DiagnosticUtility.DebugAssert(values[y].IsType(ValueDataType.Double), "");
values[y].Double = values[x].Double / values[y].Double;
}
context.PopFrame();
return this.next;
}
}
internal class ModulusOpcode : MathOpcode
{
internal ModulusOpcode()
: base(OpcodeID.Mod, MathOperator.Mod)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame argX = context.TopArg;
StackFrame argY = context.SecondArg;
Value[] values = context.Values;
DiagnosticUtility.DebugAssert(argX.Count == argY.Count, "");
for (int x = argX.basePtr, y = argY.basePtr; x <= argX.endPtr; ++x, ++y)
{
DiagnosticUtility.DebugAssert(values[x].IsType(ValueDataType.Double), "");
DiagnosticUtility.DebugAssert(values[y].IsType(ValueDataType.Double), "");
values[y].Double = values[x].Double % values[y].Double;
}
context.PopFrame();
return this.next;
}
}
internal class NegateOpcode : MathOpcode
{
internal NegateOpcode()
: base(OpcodeID.Negate, MathOperator.Negate)
{
}
internal override Opcode Eval(ProcessingContext context)
{
StackFrame frame = context.TopArg;
Value[] values = context.Values;
for (int i = frame.basePtr; i <= frame.endPtr; ++i)
{
values[i].Negate();
}
return this.next;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RelationshipDetailsRow.cs
- Merger.cs
- Mouse.cs
- XhtmlBasicImageAdapter.cs
- MetadataFile.cs
- SystemIcons.cs
- ServiceContractListItem.cs
- RectAnimationClockResource.cs
- ListViewItemMouseHoverEvent.cs
- SystemIPGlobalProperties.cs
- Point4D.cs
- ToolStripItemTextRenderEventArgs.cs
- RecordBuilder.cs
- TaiwanCalendar.cs
- PostBackTrigger.cs
- FragmentQuery.cs
- TypeLoadException.cs
- DbDataRecord.cs
- Function.cs
- PocoPropertyAccessorStrategy.cs
- HttpSysSettings.cs
- Rotation3DAnimation.cs
- ASCIIEncoding.cs
- OleDbParameterCollection.cs
- ActiveXHelper.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- DependencyPropertyValueSerializer.cs
- XPathNavigatorReader.cs
- AppliedDeviceFiltersEditor.cs
- UnsafeNativeMethods.cs
- TableCellCollection.cs
- OptimalTextSource.cs
- CustomValidator.cs
- CorrelationResolver.cs
- PersonalizationStateInfo.cs
- SupportingTokenSpecification.cs
- InputLanguageEventArgs.cs
- MatrixIndependentAnimationStorage.cs
- PtsPage.cs
- DependencyPropertyConverter.cs
- MdbDataFileEditor.cs
- SymbolMethod.cs
- EntityPropertyMappingAttribute.cs
- ScrollChangedEventArgs.cs
- UnmanagedHandle.cs
- LinkDescriptor.cs
- DataGrid.cs
- AssociationTypeEmitter.cs
- ParserExtension.cs
- WebPartTracker.cs
- DomainUpDown.cs
- ZipIORawDataFileBlock.cs
- EventDriven.cs
- _FtpDataStream.cs
- VisualTreeHelper.cs
- lengthconverter.cs
- TcpHostedTransportConfiguration.cs
- HatchBrush.cs
- WebResourceAttribute.cs
- StorageMappingItemCollection.cs
- TypeFieldSchema.cs
- HMACSHA384.cs
- ManualResetEvent.cs
- CopyAttributesAction.cs
- ListControlConvertEventArgs.cs
- Shared.cs
- BulletedList.cs
- Object.cs
- MetadataItemEmitter.cs
- FixedHyperLink.cs
- WindowsAuthenticationModule.cs
- ShutDownListener.cs
- CustomCredentialPolicy.cs
- LabelTarget.cs
- WebEvents.cs
- LayoutInformation.cs
- TextBoxAutoCompleteSourceConverter.cs
- FacetDescriptionElement.cs
- MetadataItemEmitter.cs
- DataGridParentRows.cs
- DiscoveryUtility.cs
- IndicCharClassifier.cs
- SystemIPInterfaceProperties.cs
- VScrollProperties.cs
- X509SecurityTokenParameters.cs
- TokenBasedSet.cs
- IsolatedStorageException.cs
- ObsoleteAttribute.cs
- QilXmlReader.cs
- DecoderFallbackWithFailureFlag.cs
- BasicHttpBindingElement.cs
- BooleanStorage.cs
- WindowsFormsSectionHandler.cs
- SkewTransform.cs
- CodeCompiler.cs
- OpenTypeLayoutCache.cs
- SequentialUshortCollection.cs
- MailMessage.cs
- ComEventsHelper.cs
- SamlAssertionKeyIdentifierClause.cs