Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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
- WebControlAdapter.cs
- ToolStripRendererSwitcher.cs
- WsatTransactionHeader.cs
- AnimationLayer.cs
- VariableQuery.cs
- DataServiceQueryContinuation.cs
- LifetimeServices.cs
- SQLInt32.cs
- VirtualPathProvider.cs
- PathFigure.cs
- BindingNavigator.cs
- RemotingConfiguration.cs
- EditorBrowsableAttribute.cs
- DataGridItemAttachedStorage.cs
- DataGridPageChangedEventArgs.cs
- TabControl.cs
- MetadataItemEmitter.cs
- DictionaryBase.cs
- EventProperty.cs
- WindowsFormsHelpers.cs
- SchemaNames.cs
- InvalidComObjectException.cs
- SingletonInstanceContextProvider.cs
- FtpRequestCacheValidator.cs
- SetIterators.cs
- EditorBrowsableAttribute.cs
- ImplicitInputBrush.cs
- ConnectionManager.cs
- SQLBytesStorage.cs
- DataGridSortCommandEventArgs.cs
- ListViewDeletedEventArgs.cs
- UnsafeNativeMethodsPenimc.cs
- _FixedSizeReader.cs
- DataServiceProviderWrapper.cs
- SpellerStatusTable.cs
- EventRoute.cs
- DocumentGrid.cs
- XPathArrayIterator.cs
- SequentialUshortCollection.cs
- CatalogPart.cs
- SafeRightsManagementHandle.cs
- PeerContact.cs
- GroupQuery.cs
- EntityDesignPluralizationHandler.cs
- DataServiceHostFactory.cs
- DataMisalignedException.cs
- CompilationLock.cs
- Directory.cs
- ToolStripInSituService.cs
- DataGridViewUtilities.cs
- TextServicesCompartment.cs
- TagMapInfo.cs
- TriggerBase.cs
- XmlWhitespace.cs
- _ConnectionGroup.cs
- SuppressMergeCheckAttribute.cs
- SqlOuterApplyReducer.cs
- RichTextBox.cs
- FreezableCollection.cs
- RectIndependentAnimationStorage.cs
- Underline.cs
- SqlFormatter.cs
- HostingEnvironmentSection.cs
- GlobalProxySelection.cs
- ApplicationInfo.cs
- TextElement.cs
- FunctionDetailsReader.cs
- Pair.cs
- ICspAsymmetricAlgorithm.cs
- ToolBarOverflowPanel.cs
- DateTime.cs
- XamlReaderConstants.cs
- ExpressionEditorAttribute.cs
- CngProperty.cs
- ImportCatalogPart.cs
- AutoCompleteStringCollection.cs
- Column.cs
- HtmlInputImage.cs
- HwndAppCommandInputProvider.cs
- LinqDataSourceValidationException.cs
- DefaultAutoFieldGenerator.cs
- PropertyFilterAttribute.cs
- HashHelpers.cs
- BrowserCapabilitiesCompiler.cs
- ValueProviderWrapper.cs
- Vector3DAnimationBase.cs
- ProfessionalColorTable.cs
- ClosureBinding.cs
- ScrollBar.cs
- CapabilitiesSection.cs
- WebConfigurationFileMap.cs
- CompilerCollection.cs
- HttpHeaderCollection.cs
- shaperfactoryquerycacheentry.cs
- ObjectDataSourceMethodEventArgs.cs
- SafeFileMappingHandle.cs
- ColorContext.cs
- ThemeInfoAttribute.cs
- PageParser.cs
- SqlCacheDependencyDatabase.cs