Code:
/ FX-1434 / FX-1434 / 1.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
- SlotInfo.cs
- FlagsAttribute.cs
- DataGridViewCellPaintingEventArgs.cs
- DateTimeFormatInfoScanner.cs
- UnwrappedTypesXmlSerializerManager.cs
- MarkupProperty.cs
- GradientStopCollection.cs
- DataMisalignedException.cs
- MetadataPropertyAttribute.cs
- EtwProvider.cs
- TraceHwndHost.cs
- XmlSerializerAssemblyAttribute.cs
- DebugView.cs
- GridViewColumnHeader.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- TextServicesCompartment.cs
- DataServiceException.cs
- TextLineBreak.cs
- InvalidPrinterException.cs
- SchemaTypeEmitter.cs
- Header.cs
- SiteMapNodeCollection.cs
- HtmlTableCell.cs
- InvalidDataException.cs
- DoubleKeyFrameCollection.cs
- TreeNode.cs
- SingleConverter.cs
- ResourceManagerWrapper.cs
- SecurityTokenInclusionMode.cs
- LineVisual.cs
- DatatypeImplementation.cs
- ColumnHeaderConverter.cs
- DecimalKeyFrameCollection.cs
- TaskHelper.cs
- TableStyle.cs
- Item.cs
- WebPartTransformer.cs
- HttpHandlersSection.cs
- ValidationSummary.cs
- View.cs
- TypeInformation.cs
- StagingAreaInputItem.cs
- QilStrConcat.cs
- StreamInfo.cs
- IEnumerable.cs
- Pen.cs
- SQLBoolean.cs
- SoundPlayerAction.cs
- Models.cs
- UnregisterInfo.cs
- ComponentResourceKeyConverter.cs
- HwndHostAutomationPeer.cs
- PolicyException.cs
- EventDescriptor.cs
- WebPartEventArgs.cs
- SqlServices.cs
- AuthenticationServiceManager.cs
- EntityProviderServices.cs
- UTF32Encoding.cs
- StateDesigner.CommentLayoutGlyph.cs
- RC2.cs
- WebConfigurationHostFileChange.cs
- TimeIntervalCollection.cs
- Typeface.cs
- FreeFormDragDropManager.cs
- Wizard.cs
- XmlWriterTraceListener.cs
- FunctionImportElement.cs
- EncryptedPackageFilter.cs
- CriticalFinalizerObject.cs
- Int64AnimationBase.cs
- CryptoApi.cs
- TransformerConfigurationWizardBase.cs
- SimpleApplicationHost.cs
- WebPartCollection.cs
- GestureRecognitionResult.cs
- NullableBoolConverter.cs
- DesignerAttributeInfo.cs
- nulltextcontainer.cs
- ChannelBinding.cs
- UseManagedPresentationBindingElement.cs
- SafeArrayRankMismatchException.cs
- ToolStripRenderEventArgs.cs
- PreDigestedSignedInfo.cs
- PolicyException.cs
- MergeEnumerator.cs
- CroppedBitmap.cs
- EnumMember.cs
- OperationInvokerBehavior.cs
- ExpressionLexer.cs
- BinaryFormatter.cs
- COM2PropertyDescriptor.cs
- BinaryKeyIdentifierClause.cs
- PreservationFileWriter.cs
- DirectoryRootQuery.cs
- ColumnReorderedEventArgs.cs
- COMException.cs
- OleDbInfoMessageEvent.cs
- DataGridColumnsPage.cs
- BasicDesignerLoader.cs