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
- LongAverageAggregationOperator.cs
- PolyLineSegment.cs
- EdmSchemaAttribute.cs
- SocketElement.cs
- IndependentAnimationStorage.cs
- EncoderExceptionFallback.cs
- ExpressionBuilder.cs
- AssertUtility.cs
- Binding.cs
- MDIControlStrip.cs
- CodeIdentifiers.cs
- SR.cs
- ZoneLinkButton.cs
- ParserHooks.cs
- ButtonRenderer.cs
- SqlClientWrapperSmiStream.cs
- DomainConstraint.cs
- GB18030Encoding.cs
- ResourcePermissionBase.cs
- CommandEventArgs.cs
- DbBuffer.cs
- XmlChildNodes.cs
- LinqDataView.cs
- CodeIterationStatement.cs
- SiteMapDataSource.cs
- OracleDataAdapter.cs
- SystemMulticastIPAddressInformation.cs
- GestureRecognizer.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ReadOnlyCollectionBase.cs
- XMLUtil.cs
- TextEndOfSegment.cs
- AdornedElementPlaceholder.cs
- Connection.cs
- sortedlist.cs
- CodeExpressionCollection.cs
- WmiEventSink.cs
- TlsSspiNegotiation.cs
- DefaultMemberAttribute.cs
- CfgRule.cs
- HierarchicalDataSourceControl.cs
- TraceHandler.cs
- SrgsNameValueTag.cs
- SignedXml.cs
- ExternalCalls.cs
- TabOrder.cs
- MessageVersionConverter.cs
- Ops.cs
- ElementMarkupObject.cs
- XmlSchemaAttributeGroup.cs
- DesignerForm.cs
- FixedStringLookup.cs
- AuthenticatingEventArgs.cs
- SingleKeyFrameCollection.cs
- SelectionRange.cs
- WebPartConnection.cs
- CachedCompositeFamily.cs
- EncryptedPackage.cs
- WhiteSpaceTrimStringConverter.cs
- SQLBinary.cs
- Message.cs
- AllMembershipCondition.cs
- CoreSwitches.cs
- MouseGestureValueSerializer.cs
- LinkTarget.cs
- PopupEventArgs.cs
- VectorAnimationBase.cs
- PassportAuthentication.cs
- DataGridViewRowPostPaintEventArgs.cs
- SynchronizationHandlesCodeDomSerializer.cs
- SmiXetterAccessMap.cs
- SHA256.cs
- DataGridViewRowStateChangedEventArgs.cs
- SerializableReadOnlyDictionary.cs
- MetafileHeaderEmf.cs
- BamlTreeMap.cs
- UiaCoreProviderApi.cs
- RotateTransform.cs
- PolicyException.cs
- CopyCodeAction.cs
- Hash.cs
- GlobalizationSection.cs
- PreloadedPackages.cs
- ClientRoleProvider.cs
- ProfilePropertyNameValidator.cs
- ClientSponsor.cs
- AttachmentCollection.cs
- AbstractDataSvcMapFileLoader.cs
- SqlDuplicator.cs
- BaseTransportHeaders.cs
- TreeViewEvent.cs
- XmlQueryContext.cs
- Win32Exception.cs
- TreeNodeConverter.cs
- FontConverter.cs
- AsyncSerializedWorker.cs
- FieldDescriptor.cs
- SqlInfoMessageEvent.cs
- XmlSchemaAny.cs
- UpdateCommand.cs