Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- SerializationStore.cs
- basevalidator.cs
- ConnectionConsumerAttribute.cs
- FileCodeGroup.cs
- IssuanceLicense.cs
- ThemeDirectoryCompiler.cs
- LifetimeServices.cs
- QualifiedCellIdBoolean.cs
- MetadataPropertyCollection.cs
- ControlAdapter.cs
- CustomLineCap.cs
- DesignerSerializerAttribute.cs
- ConfigXmlText.cs
- AssemblySettingAttributes.cs
- Interlocked.cs
- HandledMouseEvent.cs
- CredentialCache.cs
- Base64Encoder.cs
- NavigationEventArgs.cs
- XsdDuration.cs
- EventEntry.cs
- Triplet.cs
- HitTestFilterBehavior.cs
- ThemeableAttribute.cs
- HttpListenerPrefixCollection.cs
- StreamAsIStream.cs
- SizeAnimationUsingKeyFrames.cs
- QualifierSet.cs
- Group.cs
- RemotingSurrogateSelector.cs
- UTF8Encoding.cs
- BaseCollection.cs
- InitializerFacet.cs
- MapPathBasedVirtualPathProvider.cs
- ReaderWriterLock.cs
- ExpressionPrefixAttribute.cs
- Rules.cs
- ListParagraph.cs
- CalendarDay.cs
- MatchNoneMessageFilter.cs
- EndpointFilterProvider.cs
- FieldCollectionEditor.cs
- StreamResourceInfo.cs
- _NtlmClient.cs
- DataGridViewToolTip.cs
- TextWriterEngine.cs
- ViewPort3D.cs
- XNodeValidator.cs
- AttributedMetaModel.cs
- CodeGotoStatement.cs
- UIElement3DAutomationPeer.cs
- RichTextBoxAutomationPeer.cs
- BitArray.cs
- DataGrid.cs
- SyndicationLink.cs
- IncrementalReadDecoders.cs
- EntityTransaction.cs
- StylusLogic.cs
- SettingsProperty.cs
- Int32CollectionConverter.cs
- ModelVisual3D.cs
- _DomainName.cs
- DataChangedEventManager.cs
- SecurityRuntime.cs
- Type.cs
- HitTestResult.cs
- GridViewDeleteEventArgs.cs
- TextElement.cs
- DataListItemCollection.cs
- TextTreeUndo.cs
- SqlFunctions.cs
- PageThemeParser.cs
- AssemblyInfo.cs
- Point3DIndependentAnimationStorage.cs
- SettingsSection.cs
- NumericUpDownAccelerationCollection.cs
- DataTableMappingCollection.cs
- SqlMetaData.cs
- unsafenativemethodsother.cs
- FixedPosition.cs
- httpapplicationstate.cs
- SessionConnectionReader.cs
- ValueConversionAttribute.cs
- HttpRequest.cs
- CanonicalFormWriter.cs
- WindowsRichEditRange.cs
- TemplatePagerField.cs
- DefaultMergeHelper.cs
- OutputCacheProfile.cs
- CodeExporter.cs
- MetadataSerializer.cs
- InfoCardKeyedHashAlgorithm.cs
- SEHException.cs
- SqlProviderManifest.cs
- CellParagraph.cs
- DatagridviewDisplayedBandsData.cs
- TextFormatterHost.cs
- EventMappingSettingsCollection.cs
- DependencyObject.cs
- EnlistmentTraceIdentifier.cs