Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Dom / XPathNodeList.cs / 1305376 / 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.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DropSource.cs
- DataRow.cs
- OLEDB_Enum.cs
- exports.cs
- SystemPens.cs
- DatePicker.cs
- _ServiceNameStore.cs
- CompoundFileReference.cs
- x509store.cs
- XmlParserContext.cs
- RequestCachePolicyConverter.cs
- ParagraphVisual.cs
- PersonalizationStateInfoCollection.cs
- ComplexPropertyEntry.cs
- _ListenerAsyncResult.cs
- TypeReference.cs
- NameNode.cs
- PeerCollaboration.cs
- HostExecutionContextManager.cs
- XmlSchemaSimpleTypeUnion.cs
- RadioButton.cs
- ToolConsole.cs
- AssociationTypeEmitter.cs
- FirstMatchCodeGroup.cs
- EnumerableRowCollectionExtensions.cs
- HtmlTable.cs
- ReversePositionQuery.cs
- SmtpLoginAuthenticationModule.cs
- EndOfStreamException.cs
- EntityDataSourceMemberPath.cs
- SchemaElement.cs
- Serializer.cs
- safemediahandle.cs
- ParameterBuilder.cs
- ToolStripSeparatorRenderEventArgs.cs
- TrustSection.cs
- TextEditorLists.cs
- FilterInvalidBodyAccessException.cs
- BuilderInfo.cs
- TextSegment.cs
- XamlHttpHandlerFactory.cs
- WindowPattern.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- MachineKey.cs
- WebPageTraceListener.cs
- SqlComparer.cs
- BigInt.cs
- ServiceRoute.cs
- ETagAttribute.cs
- KnowledgeBase.cs
- PageThemeCodeDomTreeGenerator.cs
- DataRecordInternal.cs
- QilIterator.cs
- StringStorage.cs
- GroupDescription.cs
- LiteralControl.cs
- PeerCollaboration.cs
- Bezier.cs
- TemplateBindingExpressionConverter.cs
- serverconfig.cs
- CommentEmitter.cs
- DataBindingHandlerAttribute.cs
- CallbackValidatorAttribute.cs
- ProcessInfo.cs
- Animatable.cs
- DeferredElementTreeState.cs
- XmlSchemaCompilationSettings.cs
- GestureRecognizer.cs
- ChannelTraceRecord.cs
- WindowsEditBox.cs
- Delay.cs
- SHA512.cs
- String.cs
- MimeTypeMapper.cs
- DataServiceExpressionVisitor.cs
- XamlTreeBuilderBamlRecordWriter.cs
- ScriptingAuthenticationServiceSection.cs
- WhitespaceRuleReader.cs
- BooleanAnimationBase.cs
- StatusBarAutomationPeer.cs
- WebWorkflowRole.cs
- FragmentQueryKB.cs
- XmlUtil.cs
- WebReferenceOptions.cs
- TextSelection.cs
- TextElement.cs
- GenerateScriptTypeAttribute.cs
- DbDataReader.cs
- ParserExtension.cs
- WebServiceMethodData.cs
- ProfileEventArgs.cs
- ContextCorrelationInitializer.cs
- DynamicDocumentPaginator.cs
- ChildDocumentBlock.cs
- ServiceControllerDesigner.cs
- Vars.cs
- PropertyNames.cs
- TextServicesCompartmentContext.cs
- XamlGridLengthSerializer.cs
- LowerCaseStringConverter.cs