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
- CultureSpecificCharacterBufferRange.cs
- DataGridViewAccessibleObject.cs
- ECDiffieHellmanCngPublicKey.cs
- EasingKeyFrames.cs
- activationcontext.cs
- PersistenceTypeAttribute.cs
- PageSetupDialog.cs
- CounterCreationDataCollection.cs
- NativeMethods.cs
- WsdlWriter.cs
- BindingEditor.xaml.cs
- SqlProviderServices.cs
- XmlUnspecifiedAttribute.cs
- AttributeEmitter.cs
- Int16AnimationBase.cs
- TableLayoutColumnStyleCollection.cs
- SectionRecord.cs
- WindowsGraphics.cs
- SettingsAttributeDictionary.cs
- LinqDataSourceSelectEventArgs.cs
- HttpListenerException.cs
- Grid.cs
- Matrix3DConverter.cs
- cookiecollection.cs
- ExecutionEngineException.cs
- DataControlLinkButton.cs
- DbProviderConfigurationHandler.cs
- SamlAuthenticationStatement.cs
- DialogResultConverter.cs
- TypeElement.cs
- SortFieldComparer.cs
- Int32RectConverter.cs
- CompositeKey.cs
- DataServiceKeyAttribute.cs
- DataSysAttribute.cs
- TemplatedWizardStep.cs
- AssemblyName.cs
- XmlAttribute.cs
- Label.cs
- SimpleExpression.cs
- TypeSemantics.cs
- DataGridPagerStyle.cs
- XmlParserContext.cs
- SqlExpressionNullability.cs
- FutureFactory.cs
- RootAction.cs
- TokenBasedSetEnumerator.cs
- PointKeyFrameCollection.cs
- DataGridItemEventArgs.cs
- FileSecurity.cs
- WebDescriptionAttribute.cs
- FontFamilyValueSerializer.cs
- ProtocolElementCollection.cs
- TreeViewHitTestInfo.cs
- XmlSchemaComplexContent.cs
- BatchParser.cs
- StringToken.cs
- InternalTransaction.cs
- OracleCommandSet.cs
- ResourceExpressionEditorSheet.cs
- SemaphoreSecurity.cs
- Win32Native.cs
- JoinCqlBlock.cs
- TextTreeObjectNode.cs
- OleDbStruct.cs
- ICspAsymmetricAlgorithm.cs
- GetUserPreferenceRequest.cs
- ModelPropertyCollectionImpl.cs
- HtmlHead.cs
- BitmapPalettes.cs
- FormViewUpdatedEventArgs.cs
- EntityCollectionChangedParams.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- SqlDataSourceConnectionPanel.cs
- ExceptQueryOperator.cs
- ColorDialog.cs
- BitVec.cs
- OdbcUtils.cs
- MimeWriter.cs
- ComplexLine.cs
- FileDialogCustomPlacesCollection.cs
- RestrictedTransactionalPackage.cs
- TimeSpanOrInfiniteConverter.cs
- CodeAttributeDeclarationCollection.cs
- EntityViewGenerationAttribute.cs
- TreeNodeCollection.cs
- FieldNameLookup.cs
- ObjectDataSourceSelectingEventArgs.cs
- ConnectionStringEditor.cs
- ClrPerspective.cs
- ArrayWithOffset.cs
- SQLDouble.cs
- MonikerUtility.cs
- DataTableClearEvent.cs
- SqlMetaData.cs
- TreeSet.cs
- EventLogEntryCollection.cs
- ToolStripPanelRenderEventArgs.cs
- ComNativeDescriptor.cs
- XamlGridLengthSerializer.cs