Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- DTCTransactionManager.cs
- EditorPart.cs
- CodeAccessPermission.cs
- DelayDesigner.cs
- UpdateExpressionVisitor.cs
- Native.cs
- ResourceDescriptionAttribute.cs
- ProgressBarRenderer.cs
- GPPOINTF.cs
- Inline.cs
- EmissiveMaterial.cs
- Exceptions.cs
- GPRECTF.cs
- CounterCreationDataConverter.cs
- SizeConverter.cs
- IndexExpression.cs
- TableDetailsCollection.cs
- UrlMappingsModule.cs
- ErrorRuntimeConfig.cs
- ListViewItemSelectionChangedEvent.cs
- Button.cs
- DrawingContext.cs
- ObjectFullSpanRewriter.cs
- OrderedDictionary.cs
- ColumnBinding.cs
- SoapAttributeOverrides.cs
- DBSchemaRow.cs
- WebPartHeaderCloseVerb.cs
- NamespaceTable.cs
- IndentedTextWriter.cs
- ProjectionPruner.cs
- Math.cs
- FormViewModeEventArgs.cs
- GroupItem.cs
- VsPropertyGrid.cs
- KnownAssembliesSet.cs
- ToolStripHighContrastRenderer.cs
- TypeSystem.cs
- DataColumnPropertyDescriptor.cs
- unsafeIndexingFilterStream.cs
- View.cs
- StandardToolWindows.cs
- SortKey.cs
- ScrollableControl.cs
- XPathDocumentBuilder.cs
- MsdtcWrapper.cs
- QueuePathDialog.cs
- FixedDocument.cs
- BaseAddressElement.cs
- IdentityHolder.cs
- JournalEntry.cs
- SqlDataSourceEnumerator.cs
- SspiSecurityTokenProvider.cs
- ZipIOLocalFileBlock.cs
- XmlUrlResolver.cs
- EncodingInfo.cs
- SessionState.cs
- Policy.cs
- CompareValidator.cs
- BindingGroup.cs
- typedescriptorpermission.cs
- SafeRegistryHandle.cs
- Tokenizer.cs
- MouseActionValueSerializer.cs
- JournalNavigationScope.cs
- TCPClient.cs
- Baml2006ReaderFrame.cs
- NetMsmqSecurityMode.cs
- FixedTextPointer.cs
- ProvideValueServiceProvider.cs
- SystemEvents.cs
- TextEndOfParagraph.cs
- CollectionViewSource.cs
- QilPatternVisitor.cs
- FileAuthorizationModule.cs
- RegularExpressionValidator.cs
- PeerNearMe.cs
- webeventbuffer.cs
- OptimalTextSource.cs
- InheritablePropertyChangeInfo.cs
- IssuedTokenServiceElement.cs
- SettingsPropertyValueCollection.cs
- TailCallAnalyzer.cs
- ListViewCancelEventArgs.cs
- DescendentsWalker.cs
- HashMembershipCondition.cs
- GeometryHitTestResult.cs
- TextBox.cs
- RC2.cs
- FaultImportOptions.cs
- DeviceContext.cs
- ConcatQueryOperator.cs
- PluralizationServiceUtil.cs
- RightNameExpirationInfoPair.cs
- TPLETWProvider.cs
- DesignerVerb.cs
- formatter.cs
- BulletDecorator.cs
- PriorityChain.cs
- TextTreeInsertUndoUnit.cs