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
- SiteMapDataSource.cs
- NamedPipeTransportSecurity.cs
- Win32MouseDevice.cs
- CodeAssignStatement.cs
- Task.cs
- XhtmlBasicPageAdapter.cs
- CaseStatement.cs
- CacheVirtualItemsEvent.cs
- HyperLinkStyle.cs
- KnownBoxes.cs
- RectAnimation.cs
- InheritedPropertyDescriptor.cs
- LinkedList.cs
- HGlobalSafeHandle.cs
- HostAdapter.cs
- KeysConverter.cs
- Object.cs
- ApplicationId.cs
- EventManager.cs
- EntityContainer.cs
- SystemResourceHost.cs
- HierarchicalDataTemplate.cs
- DelayedRegex.cs
- ConfigurationPermission.cs
- MailDefinition.cs
- WebErrorHandler.cs
- CompilerResults.cs
- ProcessRequestArgs.cs
- EmbeddedObject.cs
- PolicyLevel.cs
- PersonalizationProviderHelper.cs
- Activator.cs
- TouchPoint.cs
- X509CertificateRecipientServiceCredential.cs
- IDReferencePropertyAttribute.cs
- StorageScalarPropertyMapping.cs
- EncodingNLS.cs
- IsolatedStorageFilePermission.cs
- SignatureHelper.cs
- SmtpReplyReaderFactory.cs
- FactoryGenerator.cs
- FrugalMap.cs
- Span.cs
- Underline.cs
- CodeTypeReferenceExpression.cs
- KeyPullup.cs
- UserPersonalizationStateInfo.cs
- SystemParameters.cs
- MessageQuerySet.cs
- XmlSerializerNamespaces.cs
- DataFormats.cs
- IRCollection.cs
- ColorKeyFrameCollection.cs
- UrlMappingsSection.cs
- _SecureChannel.cs
- DNS.cs
- TypedDatasetGenerator.cs
- ExpressionBuilderContext.cs
- RegexStringValidatorAttribute.cs
- Parallel.cs
- ErrorActivity.cs
- OdbcStatementHandle.cs
- SQLChars.cs
- ArrayTypeMismatchException.cs
- TableFieldsEditor.cs
- ViewDesigner.cs
- ConfigXmlWhitespace.cs
- VirtualizedCellInfoCollection.cs
- GatewayIPAddressInformationCollection.cs
- PropertyTabChangedEvent.cs
- AnimationException.cs
- UserControl.cs
- UserMapPath.cs
- COM2ComponentEditor.cs
- Compress.cs
- EncryptedType.cs
- util.cs
- EditorZoneAutoFormat.cs
- SelectionRange.cs
- RuntimeConfigLKG.cs
- ItemAutomationPeer.cs
- CryptoKeySecurity.cs
- ClientProxyGenerator.cs
- HandlerBase.cs
- IOThreadScheduler.cs
- ScrollItemPattern.cs
- EntityCodeGenerator.cs
- QueueNameHelper.cs
- CharEntityEncoderFallback.cs
- AncestorChangedEventArgs.cs
- TrustLevel.cs
- ControlCodeDomSerializer.cs
- RubberbandSelector.cs
- MetabaseSettings.cs
- TemplateNameScope.cs
- PrivilegeNotHeldException.cs
- AliasGenerator.cs
- Literal.cs
- ArcSegment.cs
- CharAnimationBase.cs