Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathSelectionIterator.cs / 1 / XPathSelectionIterator.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;
// We need this wrapper object to:
// 1. Calculate position
// 2. Protect internal query.Current from user who may call MoveNext().
internal class XPathSelectionIterator : ResetableIterator {
private XPathNavigator nav;
private Query query;
private int position;
internal XPathSelectionIterator(XPathNavigator nav, Query query) {
this.nav = nav.Clone();
this.query = query;
}
protected XPathSelectionIterator(XPathSelectionIterator it) {
this.nav = it.nav.Clone();
this.query = (Query) it.query.Clone();
this.position = it.position;
}
public override void Reset() {
this.query.Reset();
}
public override bool MoveNext() {
XPathNavigator n = query.Advance();
if( n != null ) {
position++;
if (!nav.MoveTo(n)) {
nav = n.Clone();
}
return true;
}
return false;
}
public override int Count { get { return query.Count; } }
public override XPathNavigator Current { get { return nav; } }
public override int CurrentPosition { get { return position; } }
public override XPathNodeIterator Clone() { return new XPathSelectionIterator(this); }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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;
// We need this wrapper object to:
// 1. Calculate position
// 2. Protect internal query.Current from user who may call MoveNext().
internal class XPathSelectionIterator : ResetableIterator {
private XPathNavigator nav;
private Query query;
private int position;
internal XPathSelectionIterator(XPathNavigator nav, Query query) {
this.nav = nav.Clone();
this.query = query;
}
protected XPathSelectionIterator(XPathSelectionIterator it) {
this.nav = it.nav.Clone();
this.query = (Query) it.query.Clone();
this.position = it.position;
}
public override void Reset() {
this.query.Reset();
}
public override bool MoveNext() {
XPathNavigator n = query.Advance();
if( n != null ) {
position++;
if (!nav.MoveTo(n)) {
nav = n.Clone();
}
return true;
}
return false;
}
public override int Count { get { return query.Count; } }
public override XPathNavigator Current { get { return nav; } }
public override int CurrentPosition { get { return position; } }
public override XPathNodeIterator Clone() { return new XPathSelectionIterator(this); }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectConverter.cs
- _ServiceNameStore.cs
- ColumnHeaderCollectionEditor.cs
- TextServicesCompartmentEventSink.cs
- DictationGrammar.cs
- WebProxyScriptElement.cs
- BitmapFrameEncode.cs
- SortKey.cs
- DesignTimeTemplateParser.cs
- SelfIssuedAuthRSAPKCS1SignatureDeformatter.cs
- AstNode.cs
- XmlName.cs
- UnmanagedMarshal.cs
- DbMetaDataCollectionNames.cs
- Font.cs
- BitmapEffectDrawingContextState.cs
- OdbcUtils.cs
- MasterPageCodeDomTreeGenerator.cs
- Light.cs
- ContentElement.cs
- Context.cs
- UInt64.cs
- ContainerUIElement3D.cs
- PostBackOptions.cs
- activationcontext.cs
- SchemaImporter.cs
- CookieProtection.cs
- CodeStatement.cs
- RequestQueryParser.cs
- OLEDB_Enum.cs
- GPPOINTF.cs
- OperatingSystemVersionCheck.cs
- XmlBindingWorker.cs
- EventMap.cs
- WSSecureConversation.cs
- Crc32.cs
- TextBoxView.cs
- sqlstateclientmanager.cs
- TextAdaptor.cs
- AtomEntry.cs
- DbConnectionPoolIdentity.cs
- PackageRelationshipCollection.cs
- BStrWrapper.cs
- securestring.cs
- Rule.cs
- MsmqInputChannelListener.cs
- ShutDownListener.cs
- SamlSecurityTokenAuthenticator.cs
- RayMeshGeometry3DHitTestResult.cs
- Internal.cs
- ServicesUtilities.cs
- ModuleConfigurationInfo.cs
- EdmEntityTypeAttribute.cs
- DataGridViewColumn.cs
- EntityConnectionStringBuilder.cs
- lengthconverter.cs
- Label.cs
- MetadataArtifactLoaderFile.cs
- SessionStateSection.cs
- MenuCommand.cs
- EntityContainerAssociationSet.cs
- DataBoundControlParameterTarget.cs
- WebEvents.cs
- StrictAndMessageFilter.cs
- ToolStripItemClickedEventArgs.cs
- AtomMaterializerLog.cs
- UserControlAutomationPeer.cs
- IPPacketInformation.cs
- ILGenerator.cs
- DoubleLinkListEnumerator.cs
- SettingsSection.cs
- TdsParameterSetter.cs
- AnnotationResource.cs
- ReflectionTypeLoadException.cs
- SynchronizationLockException.cs
- WinFormsUtils.cs
- StatusStrip.cs
- InteropTrackingRecord.cs
- PeerNameResolver.cs
- IntSecurity.cs
- SmtpClient.cs
- RuleSettingsCollection.cs
- OdbcCommand.cs
- ReadOnlyMetadataCollection.cs
- XmlSchemaSimpleTypeUnion.cs
- CrossContextChannel.cs
- ImageCreator.cs
- DiscoveryMessageSequence.cs
- OracleParameterBinding.cs
- WmpBitmapDecoder.cs
- Merger.cs
- BinaryParser.cs
- LineBreakRecord.cs
- Clock.cs
- BrowserCapabilitiesCodeGenerator.cs
- UrlMappingsSection.cs
- DeferrableContentConverter.cs
- FileDialog.cs
- DescendantBaseQuery.cs
- StateChangeEvent.cs