Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- PresentationSource.cs
- ColorContextHelper.cs
- TextBox.cs
- _ChunkParse.cs
- XmlAttributeAttribute.cs
- SchemaImporterExtensionElementCollection.cs
- Pair.cs
- BitmapScalingModeValidation.cs
- PropertyEmitter.cs
- ElementAction.cs
- Tuple.cs
- CssTextWriter.cs
- TextTreeFixupNode.cs
- BitmapFrameDecode.cs
- SqlParameterCollection.cs
- CornerRadiusConverter.cs
- PrivacyNoticeElement.cs
- MultipleViewPatternIdentifiers.cs
- ServiceReference.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- IDReferencePropertyAttribute.cs
- ListViewInsertionMark.cs
- Helper.cs
- OrthographicCamera.cs
- DataControlLinkButton.cs
- CommonDialog.cs
- VisualBasicValue.cs
- GatewayIPAddressInformationCollection.cs
- PointConverter.cs
- DoubleCollectionConverter.cs
- SelectionBorderGlyph.cs
- CodeMethodReturnStatement.cs
- NestPullup.cs
- Pen.cs
- DesignerFrame.cs
- ConsumerConnectionPointCollection.cs
- TemplateControlBuildProvider.cs
- ValidateNames.cs
- EventHandlersStore.cs
- EntitySetDataBindingList.cs
- LocalizabilityAttribute.cs
- SwitchLevelAttribute.cs
- Int16KeyFrameCollection.cs
- CLSCompliantAttribute.cs
- MenuItemStyleCollection.cs
- SubMenuStyleCollection.cs
- _NtlmClient.cs
- CodeCatchClause.cs
- UserPreferenceChangingEventArgs.cs
- ExclusiveTcpListener.cs
- HttpCacheVaryByContentEncodings.cs
- TreeView.cs
- TreeBuilder.cs
- TypeUtils.cs
- MatrixIndependentAnimationStorage.cs
- PerspectiveCamera.cs
- OpenFileDialog.cs
- CharacterHit.cs
- MethodExpr.cs
- FileVersion.cs
- Codec.cs
- SineEase.cs
- SchemaObjectWriter.cs
- SqlRewriteScalarSubqueries.cs
- HandlerBase.cs
- StyleModeStack.cs
- SQLMoney.cs
- SHA512Cng.cs
- JapaneseLunisolarCalendar.cs
- ObjectDataProvider.cs
- FrameworkElement.cs
- CompoundFileIOPermission.cs
- XmlChildEnumerator.cs
- SoapSchemaMember.cs
- ClientTargetCollection.cs
- TypeUtil.cs
- OleDbRowUpdatingEvent.cs
- DependencyObjectType.cs
- OutputCacheSettingsSection.cs
- XmlBoundElement.cs
- IndentedTextWriter.cs
- ForwardPositionQuery.cs
- FrameworkContentElement.cs
- UInt32Storage.cs
- InstanceData.cs
- TraceHandlerErrorFormatter.cs
- mactripleDES.cs
- AbstractSvcMapFileLoader.cs
- CultureTable.cs
- HMACSHA512.cs
- DataGridViewEditingControlShowingEventArgs.cs
- OrderedDictionaryStateHelper.cs
- PrintingPermissionAttribute.cs
- CodePropertyReferenceExpression.cs
- BackStopAuthenticationModule.cs
- Point3DValueSerializer.cs
- RightNameExpirationInfoPair.cs
- Typography.cs
- DataGridRelationshipRow.cs
- FrameworkElement.cs