Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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. // //[....] //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StylusPointPropertyUnit.cs
- CodeTypeReference.cs
- ProxyAttribute.cs
- VBIdentifierNameEditor.cs
- ProviderUtil.cs
- SqlDependencyListener.cs
- DataColumnPropertyDescriptor.cs
- XmlWriterSettings.cs
- ModelPropertyImpl.cs
- SkewTransform.cs
- _HTTPDateParse.cs
- QuotedPrintableStream.cs
- LinqMaximalSubtreeNominator.cs
- ListComponentEditorPage.cs
- ObjectDataSourceSelectingEventArgs.cs
- AnnotationStore.cs
- MethodBody.cs
- ExpressionBinding.cs
- MainMenu.cs
- CacheMemory.cs
- SecUtil.cs
- ChildrenQuery.cs
- ColorConverter.cs
- DataGridViewCellValidatingEventArgs.cs
- AxisAngleRotation3D.cs
- FlagsAttribute.cs
- HorizontalAlignConverter.cs
- ToolStripOverflowButton.cs
- ClrPerspective.cs
- ToolStripInSituService.cs
- InputLanguageManager.cs
- ObjectListCommandEventArgs.cs
- WebPartsPersonalization.cs
- JsonCollectionDataContract.cs
- mansign.cs
- ListViewHitTestInfo.cs
- MsmqIntegrationProcessProtocolHandler.cs
- DrawingCollection.cs
- MenuItemCollection.cs
- securitymgrsite.cs
- ColumnWidthChangedEvent.cs
- CommandPlan.cs
- PlaceHolder.cs
- EFColumnProvider.cs
- ResourceKey.cs
- ListSourceHelper.cs
- PageAsyncTaskManager.cs
- SupportingTokenListenerFactory.cs
- SafeEventLogWriteHandle.cs
- OdbcConnectionStringbuilder.cs
- SpecialTypeDataContract.cs
- CommentGlyph.cs
- SplitContainer.cs
- Pair.cs
- _Semaphore.cs
- DataListCommandEventArgs.cs
- ContentElement.cs
- AlternateView.cs
- CanonicalFormWriter.cs
- PolyLineSegment.cs
- XPathConvert.cs
- NonBatchDirectoryCompiler.cs
- DelayedRegex.cs
- HttpClientCertificate.cs
- HttpConfigurationSystem.cs
- InkCanvasInnerCanvas.cs
- SizeValueSerializer.cs
- TableCellCollection.cs
- ColorTranslator.cs
- DataBindingCollection.cs
- WebPartExportVerb.cs
- ComAdminInterfaces.cs
- RC2CryptoServiceProvider.cs
- SafeEventLogReadHandle.cs
- TextDecorationUnitValidation.cs
- VisualBasicHelper.cs
- ValueUtilsSmi.cs
- Type.cs
- _ListenerAsyncResult.cs
- TableLayoutSettings.cs
- MiniConstructorInfo.cs
- DesignBindingValueUIHandler.cs
- StickyNoteHelper.cs
- PhonemeConverter.cs
- XamlStyleSerializer.cs
- AxisAngleRotation3D.cs
- RelationshipManager.cs
- ApplicationFileCodeDomTreeGenerator.cs
- RuntimeVariablesExpression.cs
- InfoCardListRequest.cs
- RegexWorker.cs
- TextBox.cs
- CheckBoxList.cs
- WebPartZone.cs
- HostedAspNetEnvironment.cs
- BmpBitmapEncoder.cs
- StatusBarPanelClickEvent.cs
- TypeDescriptor.cs
- TextTreeObjectNode.cs
- ElementUtil.cs