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
- DataContractSerializerOperationGenerator.cs
- ResourceDictionaryCollection.cs
- ConstraintCollection.cs
- sqlcontext.cs
- MeasureItemEvent.cs
- NameTable.cs
- HttpRawResponse.cs
- RootBuilder.cs
- RetrieveVirtualItemEventArgs.cs
- BamlLocalizableResourceKey.cs
- DictionaryEntry.cs
- Win32PrintDialog.cs
- GeometryCombineModeValidation.cs
- hwndwrapper.cs
- EnumDataContract.cs
- RadioButtonPopupAdapter.cs
- StyleXamlTreeBuilder.cs
- ParameterBuilder.cs
- ContextMenuAutomationPeer.cs
- DataGridViewColumn.cs
- ReaderWriterLock.cs
- HierarchicalDataSourceDesigner.cs
- ObjectToken.cs
- ImageMap.cs
- BasicHttpSecurity.cs
- TableProviderWrapper.cs
- HtmlMobileTextWriter.cs
- OracleString.cs
- NavigationHelper.cs
- DataGridViewSelectedCellCollection.cs
- LoginView.cs
- MetadataUtilsSmi.cs
- DataReceivedEventArgs.cs
- DataObjectSettingDataEventArgs.cs
- HttpServerUtilityWrapper.cs
- DescriptionAttribute.cs
- SqlCachedBuffer.cs
- BamlLocalizabilityResolver.cs
- IdentifierCreationService.cs
- mediaeventargs.cs
- LingerOption.cs
- MethodCallTranslator.cs
- XmlSchemaProviderAttribute.cs
- ProviderIncompatibleException.cs
- IProvider.cs
- StateBag.cs
- PropertyGridView.cs
- SelectionPattern.cs
- Package.cs
- EmbossBitmapEffect.cs
- EditorZoneDesigner.cs
- ApplicationCommands.cs
- HashMembershipCondition.cs
- precedingquery.cs
- CodeDesigner.cs
- FunctionQuery.cs
- WebSysDisplayNameAttribute.cs
- HttpHandlersSection.cs
- BaseCodePageEncoding.cs
- RecommendedAsConfigurableAttribute.cs
- PropertyReference.cs
- SHA1.cs
- ThrowHelper.cs
- TableRowCollection.cs
- WindowVisualStateTracker.cs
- CryptoApi.cs
- FontSourceCollection.cs
- RotateTransform3D.cs
- _TLSstream.cs
- XPathBinder.cs
- SizeConverter.cs
- XmlFormatExtensionPointAttribute.cs
- ListView.cs
- SequenceNumber.cs
- InfoCardClaim.cs
- CorrelationManager.cs
- XmlNamespaceDeclarationsAttribute.cs
- PseudoWebRequest.cs
- PagesChangedEventArgs.cs
- Debugger.cs
- QueryCacheKey.cs
- RelativeSource.cs
- RijndaelManagedTransform.cs
- SecurityTokenSpecification.cs
- ParserContext.cs
- RelationshipEndMember.cs
- TextPattern.cs
- IPAddressCollection.cs
- XPathDocumentNavigator.cs
- SQLInt16.cs
- DesignerSerializationVisibilityAttribute.cs
- ClientTarget.cs
- XmlSchemaImport.cs
- WebBrowserUriTypeConverter.cs
- DateTimeOffsetConverter.cs
- FixedNode.cs
- FlagsAttribute.cs
- ControlBuilder.cs
- ContentOperations.cs
- WebEventTraceProvider.cs