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
- GridView.cs
- Vector3DAnimation.cs
- HttpWebResponse.cs
- ClientTargetSection.cs
- ProcessHostFactoryHelper.cs
- CacheOutputQuery.cs
- ToolStripContentPanelDesigner.cs
- StyleSheet.cs
- WebPartDescription.cs
- ProfileService.cs
- WorkflowOwnershipException.cs
- MatrixCamera.cs
- RTTrackingProfile.cs
- DataServiceRequest.cs
- PersonalizationState.cs
- M3DUtil.cs
- ObjectViewFactory.cs
- NativeCompoundFileAPIs.cs
- StreamFormatter.cs
- DataGridViewColumnEventArgs.cs
- TypeUtils.cs
- TextShapeableCharacters.cs
- CharacterShapingProperties.cs
- FreezableOperations.cs
- ConstantExpression.cs
- XmlWriterTraceListener.cs
- TrackingLocationCollection.cs
- AvtEvent.cs
- WpfWebRequestHelper.cs
- FileStream.cs
- COM2IDispatchConverter.cs
- TypeUsage.cs
- ToolZone.cs
- Screen.cs
- TableStyle.cs
- BitmapCodecInfo.cs
- ObjectAnimationBase.cs
- InfoCardHelper.cs
- Screen.cs
- XmlSequenceWriter.cs
- MultiTrigger.cs
- ClientBuildManager.cs
- FileClassifier.cs
- ProcessProtocolHandler.cs
- FixedFlowMap.cs
- ValidationRuleCollection.cs
- FilteredDataSetHelper.cs
- SamlAuthenticationClaimResource.cs
- WebPartDisplayMode.cs
- HostingEnvironmentSection.cs
- XMLSchema.cs
- Command.cs
- SqlDataSourceQueryConverter.cs
- DocumentSequence.cs
- HMACSHA512.cs
- WebPartsSection.cs
- SafeTimerHandle.cs
- EmptyCollection.cs
- FigureParagraph.cs
- ListBox.cs
- TreeWalkHelper.cs
- HttpContextServiceHost.cs
- ExtendLockCommand.cs
- Signature.cs
- DoubleStorage.cs
- DbConnectionPoolIdentity.cs
- SymmetricKeyWrap.cs
- FrameworkReadOnlyPropertyMetadata.cs
- Effect.cs
- FunctionOverloadResolver.cs
- ErrorStyle.cs
- CodeCommentStatement.cs
- ReceiveContent.cs
- SymmetricCryptoHandle.cs
- FunctionImportElement.cs
- ChtmlTextBoxAdapter.cs
- ProfileService.cs
- XamlReaderConstants.cs
- ResourceContainer.cs
- ProviderSettings.cs
- SelectorItemAutomationPeer.cs
- DependencyObjectValidator.cs
- NameTable.cs
- GPRECT.cs
- Cursor.cs
- _ListenerResponseStream.cs
- ToolStripLocationCancelEventArgs.cs
- WebPartZoneBaseDesigner.cs
- AuthStoreRoleProvider.cs
- InputMethodStateTypeInfo.cs
- DefaultProxySection.cs
- ConnectionPoolRegistry.cs
- AppDomainUnloadedException.cs
- XDeferredAxisSource.cs
- EventProviderClassic.cs
- DataRecordInfo.cs
- ToolStripDropDown.cs
- WebPartTransformerAttribute.cs
- TextEditorCopyPaste.cs
- DataFieldEditor.cs