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 {
List list;
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
- RequestSecurityTokenSerializer.cs
- DependencyPropertyConverter.cs
- CustomValidator.cs
- SafeFileMappingHandle.cs
- GenericQueueSurrogate.cs
- ValidationUtility.cs
- IndividualDeviceConfig.cs
- Parser.cs
- HtmlInputRadioButton.cs
- RoleGroupCollection.cs
- RestClientProxyHandler.cs
- DoubleAverageAggregationOperator.cs
- ResourceProperty.cs
- RubberbandSelector.cs
- AQNBuilder.cs
- StringDictionaryCodeDomSerializer.cs
- PagesSection.cs
- DataServiceQueryProvider.cs
- ValueType.cs
- BindingSource.cs
- MobileComponentEditorPage.cs
- ColorConverter.cs
- Resources.Designer.cs
- LinearQuaternionKeyFrame.cs
- fixedPageContentExtractor.cs
- InstalledVoice.cs
- TableProvider.cs
- ComponentCollection.cs
- QueryStringHandler.cs
- XmlBinaryReader.cs
- latinshape.cs
- NextPreviousPagerField.cs
- CompilerCollection.cs
- ConfigurationConverterBase.cs
- TextInfo.cs
- KeyboardDevice.cs
- OleDbConnectionFactory.cs
- ToolStripPanelRow.cs
- _DisconnectOverlappedAsyncResult.cs
- CfgParser.cs
- DataListItemCollection.cs
- SimpleBitVector32.cs
- LinqDataSourceContextEventArgs.cs
- TemplateKeyConverter.cs
- ArrayConverter.cs
- VScrollProperties.cs
- HttpModuleCollection.cs
- SecurityTokenRequirement.cs
- ParentUndoUnit.cs
- TriState.cs
- LayoutEngine.cs
- TabPage.cs
- DeferredElementTreeState.cs
- UnaryNode.cs
- AuthenticationConfig.cs
- Fonts.cs
- CriticalExceptions.cs
- WebHttpEndpoint.cs
- RegularExpressionValidator.cs
- HttpWebRequest.cs
- ValidatingReaderNodeData.cs
- BitmapEffectvisualstate.cs
- CapabilitiesRule.cs
- OperationGenerator.cs
- EdmComplexPropertyAttribute.cs
- RedirectionProxy.cs
- FacetDescription.cs
- KoreanLunisolarCalendar.cs
- WsdlBuildProvider.cs
- ProcessHostServerConfig.cs
- CodePageUtils.cs
- _ScatterGatherBuffers.cs
- __Filters.cs
- DataTableReaderListener.cs
- CellTreeNode.cs
- Membership.cs
- StrongTypingException.cs
- TreeView.cs
- WebConfigurationFileMap.cs
- ImageMap.cs
- Model3DCollection.cs
- ReflectionUtil.cs
- BitmapCodecInfo.cs
- PolygonHotSpot.cs
- ApplicationInfo.cs
- DataGridViewTextBoxCell.cs
- ComponentEditorForm.cs
- ConfigurationException.cs
- StructuredProperty.cs
- XmlSchemaAll.cs
- ProgressBarAutomationPeer.cs
- UTF7Encoding.cs
- Calendar.cs
- SystemIPInterfaceProperties.cs
- UrlPath.cs
- MailDefinition.cs
- NamedPipeConnectionPoolSettings.cs
- ReachPageContentCollectionSerializer.cs
- DataServiceCollectionOfT.cs
- SqlVisitor.cs