Code:
/ DotNET / DotNET / 8.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
- StrongNameUtility.cs
- DirectionalLight.cs
- UrlMappingCollection.cs
- AlgoModule.cs
- PersonalizationStateQuery.cs
- ExpandSegmentCollection.cs
- DrawingAttributes.cs
- XPathPatternBuilder.cs
- DecoderFallback.cs
- TraceSection.cs
- HttpContext.cs
- MarkupCompiler.cs
- SerializationInfo.cs
- PersistenceParticipant.cs
- CacheOutputQuery.cs
- TypeToken.cs
- ByteStorage.cs
- ExpressionLexer.cs
- ServiceOperation.cs
- BitmapEncoder.cs
- DateTimeFormat.cs
- HopperCache.cs
- DependencyPropertyConverter.cs
- TrackingSection.cs
- BufferBuilder.cs
- SafeEventLogReadHandle.cs
- XsdCachingReader.cs
- WpfXamlMember.cs
- BooleanAnimationUsingKeyFrames.cs
- ScrollProperties.cs
- SoapAttributeAttribute.cs
- UnsafeNativeMethods.cs
- HandlerBase.cs
- SimpleFieldTemplateFactory.cs
- NumberFunctions.cs
- LinqDataSourceSelectEventArgs.cs
- GraphicsPathIterator.cs
- DataFormats.cs
- SmiEventStream.cs
- ButtonBase.cs
- ListDictionaryInternal.cs
- PathSegmentCollection.cs
- FileCodeGroup.cs
- StylusCollection.cs
- EdmItemError.cs
- DebuggerService.cs
- EntryIndex.cs
- TextTrailingCharacterEllipsis.cs
- ObjectDataSourceEventArgs.cs
- ImageDrawing.cs
- Scene3D.cs
- TextEditorSpelling.cs
- MimeTypeMapper.cs
- DetailsViewPagerRow.cs
- DesignerWebPartChrome.cs
- Crc32.cs
- ContentType.cs
- MimeReturn.cs
- UnmanagedMemoryStreamWrapper.cs
- BitmapData.cs
- SqlDataSourceConfigureFilterForm.cs
- NotifyIcon.cs
- UrlAuthFailedErrorFormatter.cs
- BoolExpressionVisitors.cs
- TypeReference.cs
- TypeExtensionSerializer.cs
- X509InitiatorCertificateClientElement.cs
- RepeaterItemCollection.cs
- StringComparer.cs
- SettingsPropertyCollection.cs
- ErrorFormatter.cs
- XPathNodeIterator.cs
- unsafenativemethodsother.cs
- altserialization.cs
- CommonObjectSecurity.cs
- FontFamily.cs
- PagedDataSource.cs
- TeredoHelper.cs
- ListBindableAttribute.cs
- ValueConversionAttribute.cs
- BamlVersionHeader.cs
- XamlToRtfWriter.cs
- CodeAttributeArgumentCollection.cs
- WaitHandleCannotBeOpenedException.cs
- safex509handles.cs
- CodeDomSerializer.cs
- DbException.cs
- ObjectTag.cs
- SingleAnimation.cs
- FormDesigner.cs
- input.cs
- COAUTHINFO.cs
- RsaSecurityKey.cs
- XPathMultyIterator.cs
- SqlAliasesReferenced.cs
- WindowsPen.cs
- TaiwanCalendar.cs
- MarginCollapsingState.cs
- RadioButton.cs
- MetadataItem_Static.cs