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
- ImageListStreamer.cs
- EqualityComparer.cs
- ActivityUtilities.cs
- MemberInfoSerializationHolder.cs
- SystemColorTracker.cs
- SendMailErrorEventArgs.cs
- TargetControlTypeAttribute.cs
- FocusTracker.cs
- DataControlImageButton.cs
- AppDomainProtocolHandler.cs
- MemoryStream.cs
- DesignTimeHTMLTextWriter.cs
- RightsManagementEncryptionTransform.cs
- ValidationHelper.cs
- ImmutableCollection.cs
- SubstitutionList.cs
- ToolStripContentPanel.cs
- ListViewContainer.cs
- GridViewCommandEventArgs.cs
- X509CertificateInitiatorClientCredential.cs
- ProcessManager.cs
- SqlNodeAnnotation.cs
- DataSourceExpressionCollection.cs
- EncoderReplacementFallback.cs
- WinFormsComponentEditor.cs
- Converter.cs
- ThreadStaticAttribute.cs
- CodeThrowExceptionStatement.cs
- SymmetricSecurityBindingElement.cs
- ComponentConverter.cs
- Missing.cs
- DeclaredTypeValidatorAttribute.cs
- SemaphoreSecurity.cs
- Activity.cs
- SystemThemeKey.cs
- SafeNativeMethods.cs
- DockPanel.cs
- MapPathBasedVirtualPathProvider.cs
- SQLByteStorage.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- MailMessage.cs
- _SafeNetHandles.cs
- WebPartMovingEventArgs.cs
- OutputWindow.cs
- OdbcFactory.cs
- TableStyle.cs
- Int16.cs
- DocumentXPathNavigator.cs
- SqlXmlStorage.cs
- MobileCapabilities.cs
- codemethodreferenceexpression.cs
- CompositeControl.cs
- ExternalCalls.cs
- CollectionBuilder.cs
- Brush.cs
- DataMemberFieldEditor.cs
- CodeMethodInvokeExpression.cs
- OracleBFile.cs
- FastEncoder.cs
- MediaElement.cs
- ScrollItemPatternIdentifiers.cs
- AppearanceEditorPart.cs
- IndexedEnumerable.cs
- KeyPullup.cs
- GreaterThanOrEqual.cs
- Literal.cs
- DataGridTemplateColumn.cs
- Hashtable.cs
- TableItemStyle.cs
- SafePipeHandle.cs
- _NegoState.cs
- GridView.cs
- CalendarDateRangeChangingEventArgs.cs
- ServiceMetadataExtension.cs
- SoapSchemaExporter.cs
- PackageDigitalSignature.cs
- PeerObject.cs
- ClientRuntime.cs
- MouseButton.cs
- TableLayoutSettings.cs
- EditingScopeUndoUnit.cs
- Empty.cs
- TransformerInfo.cs
- XPathNodeHelper.cs
- TemplateXamlParser.cs
- OdbcEnvironment.cs
- ManagementObjectCollection.cs
- Selection.cs
- BinaryFormatter.cs
- MemoryMappedViewAccessor.cs
- FileRecordSequenceCompletedAsyncResult.cs
- XmlKeywords.cs
- SafeHandle.cs
- Select.cs
- CustomGrammar.cs
- PropertyGridEditorPart.cs
- CompensationHandlingFilter.cs
- FocusManager.cs
- XmlElementCollection.cs
- WinFormsUtils.cs