Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / NumericExpr.cs / 1 / NumericExpr.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Diagnostics; using System.Globalization; using System.Xml.Xsl; internal sealed class NumericExpr : ValueQuery { private Operator.Op op; private Query opnd1; private Query opnd2; public NumericExpr(Operator.Op op, Query opnd1, Query opnd2) { Debug.Assert( op == Operator.Op.PLUS || op == Operator.Op.MINUS || op == Operator.Op.MUL || op == Operator.Op.DIV || op == Operator.Op.MOD ); Debug.Assert(opnd1 != null && opnd2 != null); if (opnd1.StaticType != XPathResultType.Number) { opnd1 = new NumberFunctions(Function.FunctionType.FuncNumber, opnd1); } if (opnd2.StaticType != XPathResultType.Number) { opnd2 = new NumberFunctions(Function.FunctionType.FuncNumber, opnd2); } this.op = op; this.opnd1 = opnd1; this.opnd2 = opnd2; } private NumericExpr(NumericExpr other) : base(other) { this.op = other.op; this.opnd1 = Clone(other.opnd1); this.opnd2 = Clone(other.opnd2); } public override void SetXsltContext(XsltContext context){ opnd1.SetXsltContext(context); opnd2.SetXsltContext(context); } public override object Evaluate(XPathNodeIterator nodeIterator) { return GetValue(this.op, XmlConvert.ToXPathDouble(opnd1.Evaluate(nodeIterator)), XmlConvert.ToXPathDouble(opnd2.Evaluate(nodeIterator)) ); } private static double GetValue(Operator.Op op, double n1, double n2) { Debug.Assert(op == Operator.Op.PLUS || op == Operator.Op.MINUS || op == Operator.Op.MOD || op == Operator.Op.DIV || op == Operator.Op.MUL); switch (op) { case Operator.Op.PLUS : return n1 + n2; case Operator.Op.MINUS : return n1 - n2; case Operator.Op.MOD : return n1 % n2; case Operator.Op.DIV : return n1 / n2; case Operator.Op.MUL : return n1 * n2; } return 0; } public override XPathResultType StaticType { get { return XPathResultType.Number; } } public override XPathNodeIterator Clone() { return new NumericExpr(this); } public override void PrintQuery(XmlWriter w) { w.WriteStartElement(this.GetType().Name); w.WriteAttributeString("op", op.ToString()); opnd1.PrintQuery(w); opnd2.PrintQuery(w); w.WriteEndElement(); } } } // 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
- ElementHostAutomationPeer.cs
- DesignerDataView.cs
- FixedDocumentSequencePaginator.cs
- XmlSchemaObject.cs
- PartialTrustHelpers.cs
- CodeGroup.cs
- DynamicMethod.cs
- IdentityHolder.cs
- TailCallAnalyzer.cs
- MSAAWinEventWrap.cs
- CachedPathData.cs
- InputEventArgs.cs
- ImpersonateTokenRef.cs
- SchemaElementDecl.cs
- CompositeCollectionView.cs
- HttpMethodAttribute.cs
- AddingNewEventArgs.cs
- ToggleProviderWrapper.cs
- BinHexDecoder.cs
- UIElement.cs
- x509utils.cs
- ClientConfigurationSystem.cs
- AtomMaterializerLog.cs
- Size3DValueSerializer.cs
- _emptywebproxy.cs
- SafeFileMappingHandle.cs
- Int32RectConverter.cs
- SpeechEvent.cs
- EntityContainer.cs
- PresentationUIStyleResources.cs
- Scripts.cs
- ConfigurationStrings.cs
- QualifierSet.cs
- CodeTypeMemberCollection.cs
- ProxyWebPart.cs
- PointConverter.cs
- PrintingPermissionAttribute.cs
- FixedSchema.cs
- InputProcessorProfiles.cs
- DateTime.cs
- SchemaImporter.cs
- MetadataUtilsSmi.cs
- WebPartConnectionsEventArgs.cs
- LinqDataSourceView.cs
- HandlerBase.cs
- PaintEvent.cs
- Debug.cs
- SendActivity.cs
- DependentList.cs
- TrustLevelCollection.cs
- CodeTypeParameter.cs
- querybuilder.cs
- InternalRelationshipCollection.cs
- WebPartTransformerAttribute.cs
- LinqDataSourceDisposeEventArgs.cs
- glyphs.cs
- Attributes.cs
- HatchBrush.cs
- BasePattern.cs
- DbProviderManifest.cs
- ConfigurationSettings.cs
- MdImport.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Vector3DValueSerializer.cs
- initElementDictionary.cs
- Convert.cs
- ComponentChangedEvent.cs
- TabControl.cs
- PathHelper.cs
- ExpressionEditorAttribute.cs
- Keyboard.cs
- EntitySetBaseCollection.cs
- Oid.cs
- ConfigXmlWhitespace.cs
- SafeSerializationManager.cs
- UseLicense.cs
- ProviderSettings.cs
- CompensationTokenData.cs
- ExpressionNode.cs
- EntityDataSourceWrapperCollection.cs
- DecoderExceptionFallback.cs
- SubclassTypeValidatorAttribute.cs
- XmlSchemaGroupRef.cs
- TakeOrSkipWhileQueryOperator.cs
- Trigger.cs
- SQLInt16.cs
- LinkUtilities.cs
- XmlComment.cs
- SoapAttributeOverrides.cs
- ConsoleTraceListener.cs
- SendParametersContent.cs
- StyleCollection.cs
- VectorAnimationUsingKeyFrames.cs
- DigitShape.cs
- SrgsRule.cs
- BamlTreeNode.cs
- ZipFileInfo.cs
- HexParser.cs
- Item.cs
- AutomationElementIdentifiers.cs