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
- Win32PrintDialog.cs
- X509CertificateTokenFactoryCredential.cs
- updatecommandorderer.cs
- AppDomainResourcePerfCounters.cs
- ConsoleKeyInfo.cs
- StrokeCollectionConverter.cs
- AssemblyCollection.cs
- XPathAncestorIterator.cs
- MsmqIntegrationChannelFactory.cs
- LinqDataSourceDisposeEventArgs.cs
- WSAddressing10ProblemHeaderQNameFault.cs
- StringBuilder.cs
- ObjectListShowCommandsEventArgs.cs
- WebPartActionVerb.cs
- ExtendedPropertyDescriptor.cs
- mongolianshape.cs
- _ListenerResponseStream.cs
- SQLBytesStorage.cs
- XmlSchemaExternal.cs
- IncrementalHitTester.cs
- StickyNoteHelper.cs
- PersistenceTypeAttribute.cs
- IndexedEnumerable.cs
- HttpAsyncResult.cs
- EdmItemCollection.cs
- IItemProperties.cs
- DataKeyArray.cs
- Style.cs
- ZipIORawDataFileBlock.cs
- FixedBufferAttribute.cs
- Constraint.cs
- CodePropertyReferenceExpression.cs
- AxHost.cs
- AmbientEnvironment.cs
- ConfigXmlElement.cs
- BaseCodeDomTreeGenerator.cs
- XmlSecureResolver.cs
- MethodRental.cs
- OleDbException.cs
- RegexCode.cs
- RelationshipSet.cs
- documentsequencetextcontainer.cs
- PrintEvent.cs
- MexHttpsBindingCollectionElement.cs
- Tablet.cs
- XmlSchemaObjectTable.cs
- ControlEvent.cs
- XAMLParseException.cs
- KeyGestureConverter.cs
- UnsafeNativeMethodsPenimc.cs
- ServiceMetadataContractBehavior.cs
- FixedElement.cs
- UInt32.cs
- FieldNameLookup.cs
- TextTreeText.cs
- FigureHelper.cs
- ExtenderControl.cs
- FixedSOMLineRanges.cs
- LoginView.cs
- WebPartsSection.cs
- SafeIUnknown.cs
- TransformConverter.cs
- SystemException.cs
- SqlException.cs
- CustomAttributeBuilder.cs
- HttpChannelBindingToken.cs
- VisualStyleTypesAndProperties.cs
- EntityCommandCompilationException.cs
- IISUnsafeMethods.cs
- _UriTypeConverter.cs
- DocumentScope.cs
- ExpressionLink.cs
- TickBar.cs
- NativeMethodsOther.cs
- DataTableCollection.cs
- EnumBuilder.cs
- ExcludeFromCodeCoverageAttribute.cs
- DispatcherHooks.cs
- SettingsPropertyCollection.cs
- XamlToRtfWriter.cs
- CachedFontFamily.cs
- MoveSizeWinEventHandler.cs
- SqlCrossApplyToCrossJoin.cs
- DataListItemCollection.cs
- BackgroundFormatInfo.cs
- UIPermission.cs
- SafeArrayRankMismatchException.cs
- ResourceDisplayNameAttribute.cs
- Native.cs
- ConditionalBranch.cs
- ComboBoxHelper.cs
- ActiveXContainer.cs
- WindowsFormsEditorServiceHelper.cs
- Environment.cs
- NCryptNative.cs
- LockedAssemblyCache.cs
- ObjectViewFactory.cs
- UserControlCodeDomTreeGenerator.cs
- SqlConnectionHelper.cs
- ButtonChrome.cs