Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / Xml / System / Xml / Dom / XPathNodeList.cs / 1 / XPathNodeList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml { using System.Xml.XPath; using System.Diagnostics; using System.Collections; using System.Collections.Generic; internal class XPathNodeList: XmlNodeList { Listlist; XPathNodeIterator nodeIterator; bool done; public XPathNodeList(XPathNodeIterator nodeIterator) { this.nodeIterator = nodeIterator; this.list = new List (); this.done = false; } public override int Count { get { if (! done) { ReadUntil(Int32.MaxValue); } return list.Count; } } private static readonly object[] nullparams = {}; private XmlNode GetNode(XPathNavigator n) { IHasXmlNode iHasNode = (IHasXmlNode) n; return iHasNode.GetNode(); } internal int ReadUntil(int index) { int count = list.Count; while (! done && count <= index) { if (nodeIterator.MoveNext()) { XmlNode n = GetNode(nodeIterator.Current); if (n != null) { list.Add(n); count++; } } else { done = true; break; } } return count; } public override XmlNode Item(int index) { if (list.Count <= index) { ReadUntil(index); } if (index < 0 || list.Count <= index) { return null; } return list[index]; } public override IEnumerator GetEnumerator() { return new XmlNodeListEnumerator(this); } } internal class XmlNodeListEnumerator : IEnumerator { XPathNodeList list; int index; bool valid; public XmlNodeListEnumerator(XPathNodeList list) { this.list = list; this.index = -1; this.valid = false; } public void Reset() { index = -1; } public bool MoveNext() { index++; int count = list.ReadUntil(index + 1); // read past for delete-node case if (count - 1 < index) { return false; } valid = (list[index] != null); return valid; } public object Current { get { if (valid) { return list[index]; } return null; } } } } // 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
- OdbcCommand.cs
- CompressionTransform.cs
- EventLogInformation.cs
- XmlImplementation.cs
- HashSet.cs
- PackWebRequest.cs
- FrameSecurityDescriptor.cs
- XmlSchemaValidationException.cs
- WeakReferenceList.cs
- BinarySerializer.cs
- RequiredAttributeAttribute.cs
- SvcMapFileSerializer.cs
- TagMapCollection.cs
- XPathSelectionIterator.cs
- XmlSchemaObjectCollection.cs
- WebHttpElement.cs
- ToolTip.cs
- AttributeInfo.cs
- JsonEncodingStreamWrapper.cs
- ScrollData.cs
- Point3DIndependentAnimationStorage.cs
- InvalidCastException.cs
- ActivationArguments.cs
- ColorPalette.cs
- InternalRelationshipCollection.cs
- GlobalDataBindingHandler.cs
- CodeMemberProperty.cs
- HttpHeaderCollection.cs
- SaveWorkflowAsyncResult.cs
- MenuAutomationPeer.cs
- IntSecurity.cs
- IdleTimeoutMonitor.cs
- EnumerableRowCollectionExtensions.cs
- WebPartZone.cs
- DocumentGrid.cs
- QueueSurrogate.cs
- DesignOnlyAttribute.cs
- ListViewUpdateEventArgs.cs
- ReadContentAsBinaryHelper.cs
- StorageModelBuildProvider.cs
- DivideByZeroException.cs
- ReaderWriterLock.cs
- MissingMethodException.cs
- EventLogEntry.cs
- DesignDataSource.cs
- VerificationException.cs
- ActiveXHelper.cs
- DataGridDetailsPresenterAutomationPeer.cs
- QuotedPairReader.cs
- NativeActivityAbortContext.cs
- HttpHandlerActionCollection.cs
- WebPartVerbCollection.cs
- CodeAttributeDeclarationCollection.cs
- DetailsViewPageEventArgs.cs
- RawStylusInputReport.cs
- ControlFilterExpression.cs
- WindowsGraphics.cs
- AQNBuilder.cs
- FormViewUpdateEventArgs.cs
- TextBounds.cs
- WebAdminConfigurationHelper.cs
- BindingsCollection.cs
- FolderBrowserDialog.cs
- ComplexTypeEmitter.cs
- CheckBox.cs
- QfeChecker.cs
- Item.cs
- MessagePropertyDescriptionCollection.cs
- SpellerHighlightLayer.cs
- CancellableEnumerable.cs
- SapiRecoInterop.cs
- EntityDataSourceContainerNameItem.cs
- webclient.cs
- SchemaTableColumn.cs
- ServiceOperation.cs
- SizeAnimation.cs
- EntitySqlException.cs
- Graph.cs
- WebPartConnectionsCancelEventArgs.cs
- IdentityValidationException.cs
- Formatter.cs
- MultidimensionalArrayItemReference.cs
- ZipPackagePart.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- AssemblyAttributesGoHere.cs
- DBSchemaTable.cs
- EventHandlingScope.cs
- Scanner.cs
- AnnotationService.cs
- SimpleApplicationHost.cs
- KeyConverter.cs
- MsmqChannelFactory.cs
- WindowShowOrOpenTracker.cs
- SQLBinary.cs
- CharEntityEncoderFallback.cs
- TemplateModeChangedEventArgs.cs
- TableDetailsRow.cs
- WebPartHelpVerb.cs
- CryptoStream.cs
- ListBoxChrome.cs