Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathSelectionIterator.cs / 1305376 / 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
- XmlILModule.cs
- ShaderEffect.cs
- DateRangeEvent.cs
- SqlHelper.cs
- XmlAttributeHolder.cs
- DataBindingCollectionConverter.cs
- LoginView.cs
- DesignerTransaction.cs
- LinqDataSourceView.cs
- unsafeIndexingFilterStream.cs
- BitmapMetadataBlob.cs
- UserControlCodeDomTreeGenerator.cs
- PasswordTextContainer.cs
- BufferedGraphicsContext.cs
- MediaTimeline.cs
- SessionSwitchEventArgs.cs
- CompilerTypeWithParams.cs
- RunClient.cs
- AnyReturnReader.cs
- AuthenticationModulesSection.cs
- RepeaterItem.cs
- LineServicesRun.cs
- CompatibleComparer.cs
- CodeParameterDeclarationExpressionCollection.cs
- DirtyTextRange.cs
- OLEDB_Enum.cs
- MetadataElement.cs
- ApplicationTrust.cs
- DataErrorValidationRule.cs
- TextReader.cs
- DefaultProxySection.cs
- HttpModuleAction.cs
- AndCondition.cs
- Environment.cs
- WebPartTransformerCollection.cs
- DataTableExtensions.cs
- TransportDefaults.cs
- CodeDirectoryCompiler.cs
- Mapping.cs
- datacache.cs
- DataSourceControl.cs
- ModelToObjectValueConverter.cs
- ManipulationLogic.cs
- StorageEndPropertyMapping.cs
- ByteStorage.cs
- BindingMemberInfo.cs
- MobileErrorInfo.cs
- CommandHelpers.cs
- Win32.cs
- AnnotationAdorner.cs
- PermissionRequestEvidence.cs
- PriorityRange.cs
- CommonProperties.cs
- CellQuery.cs
- UnsignedPublishLicense.cs
- DesignerExtenders.cs
- TableLayoutRowStyleCollection.cs
- ISO2022Encoding.cs
- ExtensionElement.cs
- DbConnectionStringBuilder.cs
- ApplicationTrust.cs
- ListViewItemEventArgs.cs
- RoutingEndpointTrait.cs
- NullableConverter.cs
- MD5CryptoServiceProvider.cs
- EdmValidator.cs
- DatatypeImplementation.cs
- InputLanguage.cs
- CodeDefaultValueExpression.cs
- CompilerGlobalScopeAttribute.cs
- ControlType.cs
- Fonts.cs
- QueryContinueDragEvent.cs
- OciEnlistContext.cs
- DateBoldEvent.cs
- _SingleItemRequestCache.cs
- EditorZoneBase.cs
- COM2PictureConverter.cs
- Attributes.cs
- ApplicationDirectoryMembershipCondition.cs
- LocatorGroup.cs
- Touch.cs
- ReturnType.cs
- WebPartVerbsEventArgs.cs
- AuthenticationSection.cs
- Grant.cs
- ZoneLinkButton.cs
- CalendarDataBindingHandler.cs
- ZipFileInfo.cs
- _FixedSizeReader.cs
- Matrix3D.cs
- ComponentDispatcherThread.cs
- MdiWindowListItemConverter.cs
- ProxyManager.cs
- SurrogateChar.cs
- Lease.cs
- DetailsView.cs
- MetadataArtifactLoaderCompositeResource.cs
- AsymmetricAlgorithm.cs
- ClientTargetSection.cs