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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CriticalFinalizerObject.cs
- SQLInt32Storage.cs
- ExpressionBindingCollection.cs
- XPathSelectionIterator.cs
- XmlWrappingReader.cs
- NativeMethods.cs
- ModuleBuilderData.cs
- WebBrowsableAttribute.cs
- HttpModuleActionCollection.cs
- Registry.cs
- HighlightComponent.cs
- OpenFileDialog.cs
- ProxyFragment.cs
- CommandID.cs
- Style.cs
- Math.cs
- Stack.cs
- UIElement3D.cs
- StoreContentChangedEventArgs.cs
- DbDataReader.cs
- StdRegProviderWrapper.cs
- BCryptSafeHandles.cs
- CodeDelegateInvokeExpression.cs
- StyleModeStack.cs
- ConfigurationConverterBase.cs
- LeafCellTreeNode.cs
- HtmlShim.cs
- QilName.cs
- Attributes.cs
- WebPartCancelEventArgs.cs
- SerializationFieldInfo.cs
- CommonDialog.cs
- NullableConverter.cs
- UIEndRequest.cs
- UInt16.cs
- ToolStripActionList.cs
- SourceSwitch.cs
- SchemaAttDef.cs
- ItemsPanelTemplate.cs
- ArraySubsetEnumerator.cs
- XComponentModel.cs
- TabItemWrapperAutomationPeer.cs
- FixedMaxHeap.cs
- CodeStatementCollection.cs
- RequestValidator.cs
- Knowncolors.cs
- BrushValueSerializer.cs
- XmlSerializationReader.cs
- HashCodeCombiner.cs
- HttpListenerException.cs
- XmlBinaryReader.cs
- NativeActivityTransactionContext.cs
- _SslSessionsCache.cs
- MatrixUtil.cs
- DaylightTime.cs
- CompilerTypeWithParams.cs
- LogExtent.cs
- EntityViewGenerator.cs
- UIElementParaClient.cs
- TableItemStyle.cs
- EpmCustomContentDeSerializer.cs
- ContextStack.cs
- ProcessInfo.cs
- xml.cs
- LineServices.cs
- XmlObjectSerializerReadContextComplexJson.cs
- PageCodeDomTreeGenerator.cs
- TextEditorDragDrop.cs
- DockingAttribute.cs
- EventWaitHandle.cs
- GlyphRunDrawing.cs
- OletxVolatileEnlistment.cs
- XmlCollation.cs
- _NetRes.cs
- Task.cs
- X509CertificateChain.cs
- CookieProtection.cs
- TaskSchedulerException.cs
- ShowExpandedMultiValueConverter.cs
- CheckedListBox.cs
- PropertyNames.cs
- Int32RectConverter.cs
- ClientTargetSection.cs
- ToolboxControl.cs
- GenericAuthenticationEventArgs.cs
- PropertyPath.cs
- AbstractSvcMapFileLoader.cs
- DivideByZeroException.cs
- Button.cs
- CustomValidator.cs
- DataSourceXmlSerializer.cs
- ExcCanonicalXml.cs
- CodeCatchClauseCollection.cs
- AutomationPropertyInfo.cs
- HtmlInputButton.cs
- Parser.cs
- serverconfig.cs
- SchemaImporter.cs
- FontFamily.cs
- counter.cs