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
- CngKey.cs
- EntityDesignerDataSourceView.cs
- ToolStripItemCollection.cs
- CompiledRegexRunner.cs
- DispatcherHookEventArgs.cs
- UnsafeNativeMethods.cs
- IISUnsafeMethods.cs
- HttpResponseWrapper.cs
- RegexWorker.cs
- ResourceReader.cs
- TextTreeDeleteContentUndoUnit.cs
- HtmlInputImage.cs
- NavigatorInput.cs
- ContractMethodInfo.cs
- DispatcherOperation.cs
- TextDocumentView.cs
- FormsAuthenticationEventArgs.cs
- SessionStateItemCollection.cs
- DataContractAttribute.cs
- SynthesizerStateChangedEventArgs.cs
- SecureStringHasher.cs
- ToggleButton.cs
- UrlMappingsSection.cs
- XmlQueryCardinality.cs
- WindowsStreamSecurityBindingElement.cs
- AssemblyAttributesGoHere.cs
- contentDescriptor.cs
- NonVisualControlAttribute.cs
- EventProvider.cs
- DbXmlEnabledProviderManifest.cs
- xsdvalidator.cs
- SqlTypeSystemProvider.cs
- TemplatedControlDesigner.cs
- VBIdentifierNameEditor.cs
- EnumValAlphaComparer.cs
- ConversionContext.cs
- UnsignedPublishLicense.cs
- InputScopeAttribute.cs
- ProxyAssemblyNotLoadedException.cs
- SafeNativeMethodsCLR.cs
- EntityProxyFactory.cs
- KoreanLunisolarCalendar.cs
- DetailsViewDeleteEventArgs.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- ApplicationProxyInternal.cs
- CustomValidator.cs
- ObservableDictionary.cs
- ResizingMessageFilter.cs
- KnownTypesProvider.cs
- Point3DKeyFrameCollection.cs
- WeakReference.cs
- IncrementalReadDecoders.cs
- MachineKeyConverter.cs
- CategoryAttribute.cs
- UserPreferenceChangingEventArgs.cs
- SqlFunctionAttribute.cs
- ValidationUtility.cs
- DbConnectionPool.cs
- BindingList.cs
- ResourceType.cs
- OperationAbortedException.cs
- DbMetaDataCollectionNames.cs
- DateRangeEvent.cs
- WebAdminConfigurationHelper.cs
- SqlConnectionStringBuilder.cs
- FeatureAttribute.cs
- ItemList.cs
- MultiSelector.cs
- Debug.cs
- PolyLineSegmentFigureLogic.cs
- LeaseManager.cs
- DESCryptoServiceProvider.cs
- WebConvert.cs
- FigureParaClient.cs
- Color.cs
- TabControl.cs
- TypeInitializationException.cs
- OutOfProcStateClientManager.cs
- SqlInfoMessageEvent.cs
- Transform3DGroup.cs
- ReturnType.cs
- XmlArrayItemAttribute.cs
- Pair.cs
- StaticDataManager.cs
- OleAutBinder.cs
- MessageSmuggler.cs
- WSSecurityJan2004.cs
- FaultConverter.cs
- UpdateProgress.cs
- MethodBody.cs
- DataSourceSelectArguments.cs
- _DigestClient.cs
- HuffCodec.cs
- SplashScreenNativeMethods.cs
- BamlTreeMap.cs
- ListViewDeletedEventArgs.cs
- NonParentingControl.cs
- DetailsViewDeletedEventArgs.cs
- CompilerState.cs
- ReferentialConstraint.cs