Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / BooleanFunctions.cs / 1 / BooleanFunctions.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; using FT = MS.Internal.Xml.XPath.Function.FunctionType; internal sealed class BooleanFunctions : ValueQuery { Query arg; FT funcType; public BooleanFunctions(FT funcType, Query arg) { this.arg = arg; this.funcType = funcType; } private BooleanFunctions(BooleanFunctions other) : base(other) { this.arg = Clone(other.arg); this.funcType = other.funcType; } public override void SetXsltContext(XsltContext context) { if (arg != null) { arg.SetXsltContext(context); } } public override object Evaluate(XPathNodeIterator nodeIterator) { switch (funcType) { case FT.FuncBoolean : return toBoolean(nodeIterator); case FT.FuncNot : return Not(nodeIterator); case FT.FuncTrue : return true; case FT.FuncFalse : return false; case FT.FuncLang : return Lang(nodeIterator); } return false; } internal static bool toBoolean(double number) { return number != 0 && ! double.IsNaN(number); } internal static bool toBoolean(string str) { return str.Length > 0; } internal bool toBoolean(XPathNodeIterator nodeIterator) { object result = arg.Evaluate(nodeIterator); if (result is XPathNodeIterator) return arg.Advance() != null; if (result is string ) return toBoolean((string)result); if (result is double ) return toBoolean((double)result); if (result is bool ) return (bool)result; Debug.Assert(result is XPathNavigator, "Unknown value type"); return true; } public override XPathResultType StaticType { get { return XPathResultType.Boolean; } } private bool Not(XPathNodeIterator nodeIterator) { return ! (bool) arg.Evaluate(nodeIterator); } private bool Lang(XPathNodeIterator nodeIterator) { string str = arg.Evaluate(nodeIterator).ToString(); string lang = nodeIterator.Current.XmlLang; return ( lang.StartsWith(str, StringComparison.OrdinalIgnoreCase) && (lang.Length == str.Length || lang[str.Length] == '-') ); } public override XPathNodeIterator Clone() { return new BooleanFunctions(this); } public override void PrintQuery(XmlWriter w) { w.WriteStartElement(this.GetType().Name); w.WriteAttributeString("name", funcType.ToString()); if (arg != null) { arg.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
- AlphaSortedEnumConverter.cs
- XsdValidatingReader.cs
- XmlTypeMapping.cs
- BeginSelectCardRequest.cs
- EventLog.cs
- RowSpanVector.cs
- CommandID.cs
- QualifiedCellIdBoolean.cs
- InputManager.cs
- Util.cs
- DiscoveryMessageSequence11.cs
- References.cs
- ServiceHostingEnvironmentSection.cs
- UserPreferenceChangedEventArgs.cs
- RoleManagerEventArgs.cs
- CircleHotSpot.cs
- ScrollData.cs
- CodeActivity.cs
- Literal.cs
- ImageField.cs
- MaskInputRejectedEventArgs.cs
- Sql8ExpressionRewriter.cs
- StylusOverProperty.cs
- XmlMembersMapping.cs
- MarshalByValueComponent.cs
- RightsManagementEncryptedStream.cs
- FrameworkContentElement.cs
- UiaCoreApi.cs
- UserControl.cs
- NotImplementedException.cs
- PtsContext.cs
- SchemaNamespaceManager.cs
- CLSCompliantAttribute.cs
- WebConfigurationFileMap.cs
- IndexedEnumerable.cs
- PointHitTestParameters.cs
- SqlConnectionStringBuilder.cs
- PaintEvent.cs
- Win32Exception.cs
- OdbcParameterCollection.cs
- XsdDuration.cs
- MbpInfo.cs
- DataFormats.cs
- ProfileBuildProvider.cs
- TextRangeEditTables.cs
- EditorBrowsableAttribute.cs
- TreeNodeSelectionProcessor.cs
- AssertSection.cs
- SafeThreadHandle.cs
- CustomTypeDescriptor.cs
- PolicyImporterElement.cs
- SystemUdpStatistics.cs
- HebrewCalendar.cs
- WorkItem.cs
- NullableIntSumAggregationOperator.cs
- Internal.cs
- DataColumn.cs
- Style.cs
- ConfigXmlElement.cs
- ModuleConfigurationInfo.cs
- NetworkInformationException.cs
- SpeechSynthesizer.cs
- EpmSyndicationContentSerializer.cs
- TreeWalker.cs
- GridViewPageEventArgs.cs
- MediaSystem.cs
- NativeMethods.cs
- IDispatchConstantAttribute.cs
- FrameAutomationPeer.cs
- CompositeControl.cs
- DataGridViewAddColumnDialog.cs
- DoubleUtil.cs
- NavigationHelper.cs
- EdmError.cs
- WSSecurityPolicy12.cs
- SafeNativeMethodsOther.cs
- UpDownBase.cs
- DiscoveryInnerClientManaged11.cs
- Buffer.cs
- BitmapEffectGroup.cs
- XmlTypeAttribute.cs
- DocumentViewerConstants.cs
- RecognizeCompletedEventArgs.cs
- _ConnectOverlappedAsyncResult.cs
- CmsInterop.cs
- ScrollItemProviderWrapper.cs
- DataGridViewTextBoxCell.cs
- BufferModesCollection.cs
- RemotingClientProxy.cs
- MetabaseReader.cs
- StackOverflowException.cs
- Constraint.cs
- RtfToXamlLexer.cs
- SizeChangedEventArgs.cs
- BevelBitmapEffect.cs
- FlowLayoutPanel.cs
- GenericIdentity.cs
- SqlFactory.cs
- WebPartTracker.cs
- NameSpaceExtractor.cs