Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / ExtensionQuery.cs / 2 / ExtensionQuery.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.Xsl; using System.Xml.XPath; using System.Diagnostics; using System.Globalization; using System.Collections; internal abstract class ExtensionQuery : Query { protected string prefix; protected string name; protected XsltContext xsltContext; private ResetableIterator queryIterator; public ExtensionQuery(string prefix, string name) : base() { this.prefix = prefix; this.name = name; } protected ExtensionQuery(ExtensionQuery other) : base(other) { this.prefix = other.prefix; this.name = other.name; this.xsltContext = other.xsltContext; this.queryIterator = (ResetableIterator)Clone(other.queryIterator); } public override void Reset() { if (queryIterator != null) { queryIterator.Reset(); } } public override XPathNavigator Current { get { if (queryIterator == null) { throw XPathException.Create(Res.Xp_NodeSetExpected); } if (queryIterator.CurrentPosition == 0) { Advance(); } return queryIterator.Current; } } public override XPathNavigator Advance() { if (queryIterator == null) { throw XPathException.Create(Res.Xp_NodeSetExpected); } if (queryIterator.MoveNext()) { return queryIterator.Current; } return null; } public override int CurrentPosition { get { if (queryIterator != null) { return queryIterator.CurrentPosition; } return 0; } } protected object ProcessResult(object value) { if (value is string ) return value; if (value is double ) return value; if (value is bool ) return value; if (value is XPathNavigator) return value; if (value is Int32 ) return (double)(Int32)value; if (value == null) { queryIterator = XPathEmptyIterator.Instance; return this; // We map null to NodeSet to let $null/foo work well. } ResetableIterator resetable = value as ResetableIterator; if (resetable != null) { // We need Clone() value because variable may be used several times // and they shouldn't queryIterator = (ResetableIterator)resetable.Clone(); return this; } XPathNodeIterator nodeIterator = value as XPathNodeIterator; if (nodeIterator != null) { queryIterator = new XPathArrayIterator(nodeIterator); return this; } IXPathNavigable navigable = value as IXPathNavigable; if(navigable != null) { return navigable.CreateNavigator(); } if (value is Int16 ) return (double)(Int16)value; if (value is Int64 ) return (double)(Int64)value; if (value is UInt32) return (double)(UInt32)value; if (value is UInt16) return (double)(UInt16)value; if (value is UInt64) return (double)(UInt64)value; if (value is Single) return (double)(Single)value; if (value is Decimal) return (double)(Decimal)value; return value.ToString(); } protected string QName { get { return prefix.Length != 0 ? prefix + ":" + name : name; } } public override int Count { get { return queryIterator == null ? 1 : queryIterator.Count; } } public override XPathResultType StaticType { get { return XPathResultType.Any; } } } } // 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
- DoubleLinkList.cs
- WebPartConnectionsEventArgs.cs
- DrawingContextWalker.cs
- XmlBoundElement.cs
- PropertyChangingEventArgs.cs
- Attributes.cs
- _OverlappedAsyncResult.cs
- SerializerWriterEventHandlers.cs
- OleServicesContext.cs
- NetworkAddressChange.cs
- BookmarkManager.cs
- ToolBarDesigner.cs
- CalculatedColumn.cs
- ConvertersCollection.cs
- BulletedListEventArgs.cs
- DescendentsWalker.cs
- RangeValuePattern.cs
- MetadataItem_Static.cs
- ThreadStartException.cs
- KeyValueConfigurationCollection.cs
- ToggleButton.cs
- Inline.cs
- SqlRetyper.cs
- ObjectStateFormatter.cs
- ServerIdentity.cs
- ConfigDefinitionUpdates.cs
- PathFigureCollectionConverter.cs
- CodeDirectoryCompiler.cs
- UserNameSecurityToken.cs
- ListQueryResults.cs
- FillErrorEventArgs.cs
- Compilation.cs
- Transform.cs
- EditorOptionAttribute.cs
- dataSvcMapFileLoader.cs
- CollectionViewSource.cs
- ToolStripContextMenu.cs
- DmlSqlGenerator.cs
- XmlSerializerSection.cs
- OutputWindow.cs
- ModifierKeysValueSerializer.cs
- HtmlPhoneCallAdapter.cs
- EntityDataSourceMemberPath.cs
- TransactionFilter.cs
- OutputCacheSettingsSection.cs
- WebSysDefaultValueAttribute.cs
- SqlTransaction.cs
- UriTemplateLiteralQueryValue.cs
- TextRunProperties.cs
- RoutedUICommand.cs
- IsolatedStoragePermission.cs
- VectorAnimationUsingKeyFrames.cs
- SystemIPGlobalStatistics.cs
- Header.cs
- ByteStorage.cs
- JournalEntryStack.cs
- NamespaceMapping.cs
- ServiceMetadataBehavior.cs
- XmlLanguageConverter.cs
- WebPartMenuStyle.cs
- SqlNodeAnnotation.cs
- embossbitmapeffect.cs
- Image.cs
- FilterQueryOptionExpression.cs
- DetailsViewDeleteEventArgs.cs
- XmlLinkedNode.cs
- DBCSCodePageEncoding.cs
- ImageClickEventArgs.cs
- LinkUtilities.cs
- DecodeHelper.cs
- ComponentConverter.cs
- SafeNativeMethodsCLR.cs
- DocumentViewerBaseAutomationPeer.cs
- DisableDpiAwarenessAttribute.cs
- SoapElementAttribute.cs
- TableItemPattern.cs
- ToolStripDropDownDesigner.cs
- SqlInternalConnection.cs
- ContextDataSource.cs
- QueryOpeningEnumerator.cs
- ValidatorCollection.cs
- CharacterMetrics.cs
- WebConfigurationFileMap.cs
- TextEffect.cs
- AccessDataSource.cs
- ByteStack.cs
- ReplyChannelAcceptor.cs
- AnimatedTypeHelpers.cs
- ConfigurationPropertyAttribute.cs
- EndpointReference.cs
- UserControl.cs
- PrintPreviewGraphics.cs
- DesignSurface.cs
- baseaxisquery.cs
- ReceiveActivityDesigner.cs
- XmlSchemaInfo.cs
- BufferedWebEventProvider.cs
- SnapLine.cs
- SiteMembershipCondition.cs
- ExceptionUtility.cs