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
- ExtenderProviderService.cs
- SelectionGlyphBase.cs
- TrustLevelCollection.cs
- UserPreferenceChangedEventArgs.cs
- SimpleBitVector32.cs
- StylusPointProperty.cs
- DataGridColumnReorderingEventArgs.cs
- CheckBoxFlatAdapter.cs
- CodeTypeMemberCollection.cs
- ScrollContentPresenter.cs
- XmlBinaryReader.cs
- WorkflowControlClient.cs
- SchemeSettingElementCollection.cs
- LineServicesCallbacks.cs
- HtmlElementErrorEventArgs.cs
- PerformanceCounterManager.cs
- ResXFileRef.cs
- CommentEmitter.cs
- NavigationProperty.cs
- ReadOnlyDataSource.cs
- StrongNameUtility.cs
- DataTableTypeConverter.cs
- EntityClientCacheEntry.cs
- TextProperties.cs
- documentation.cs
- TransformerInfoCollection.cs
- TreeWalkHelper.cs
- InvokeHandlers.cs
- VisualTarget.cs
- AuthorizationSection.cs
- PageFunction.cs
- TextRunProperties.cs
- TextLineBreak.cs
- cookiecontainer.cs
- CacheSection.cs
- StrongName.cs
- OracleConnectionStringBuilder.cs
- AutomationPattern.cs
- ExtractCollection.cs
- EntityCollection.cs
- StringResourceManager.cs
- XmlSchemaIdentityConstraint.cs
- Trustee.cs
- MultiBindingExpression.cs
- DataAdapter.cs
- TypeSystem.cs
- DataControlExtensions.cs
- XmlAnyElementAttributes.cs
- DataGridViewSelectedRowCollection.cs
- XmlMessageFormatter.cs
- FontResourceCache.cs
- DSACryptoServiceProvider.cs
- LinkArea.cs
- SiteMapDataSourceView.cs
- MetadataUtilsSmi.cs
- Executor.cs
- indexingfiltermarshaler.cs
- ProfileServiceManager.cs
- WebBrowserHelper.cs
- ResXDataNode.cs
- ToolStripTextBox.cs
- Keyboard.cs
- ActivationArguments.cs
- Int32CAMarshaler.cs
- _FtpControlStream.cs
- ConfigurationLocationCollection.cs
- DialogResultConverter.cs
- HttpBufferlessInputStream.cs
- DataIdProcessor.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- InfoCardClaim.cs
- QuadTree.cs
- SynchronizationScope.cs
- PagedDataSource.cs
- XmlWriterSettings.cs
- SettingsPropertyValueCollection.cs
- SerializeAbsoluteContext.cs
- OperatorExpressions.cs
- Typeface.cs
- WindowsTokenRoleProvider.cs
- DateTimePicker.cs
- CodeRemoveEventStatement.cs
- CodeNamespaceImportCollection.cs
- ApplicationSecurityManager.cs
- Pkcs7Recipient.cs
- ValueOfAction.cs
- SubclassTypeValidatorAttribute.cs
- Persist.cs
- Gdiplus.cs
- DynamicValueConverter.cs
- RegisterInfo.cs
- Latin1Encoding.cs
- SByteStorage.cs
- RowToParametersTransformer.cs
- RotateTransform.cs
- EncoderNLS.cs
- ServiceContractViewControl.Designer.cs
- AssociatedControlConverter.cs
- InvokeBinder.cs
- BadImageFormatException.cs