Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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 {
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.
//------------------------------------------------------------------------------
//
// 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
- XomlCompilerParameters.cs
- TemplateBindingExpressionConverter.cs
- panel.cs
- ListBindingHelper.cs
- RadioButtonDesigner.cs
- QfeChecker.cs
- XmlSigningNodeWriter.cs
- DataGridViewColumnDesigner.cs
- FamilyTypefaceCollection.cs
- X509ThumbprintKeyIdentifierClause.cs
- FontDifferentiator.cs
- SafeArrayRankMismatchException.cs
- DropDownButton.cs
- ControlBuilder.cs
- MergeFailedEvent.cs
- BuildResult.cs
- CompilationRelaxations.cs
- XmlRawWriterWrapper.cs
- VersionedStreamOwner.cs
- ArraySegment.cs
- ContentWrapperAttribute.cs
- CodeBinaryOperatorExpression.cs
- MergeLocalizationDirectives.cs
- TableRow.cs
- invalidudtexception.cs
- DataGridViewColumnConverter.cs
- Clipboard.cs
- DebugView.cs
- BrowsableAttribute.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- AnnotationComponentChooser.cs
- RectIndependentAnimationStorage.cs
- HopperCache.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CodeDomConfigurationHandler.cs
- ResourceReferenceKeyNotFoundException.cs
- ReadOnlyNameValueCollection.cs
- ClientSettingsProvider.cs
- NameValuePermission.cs
- EventListenerClientSide.cs
- PackageProperties.cs
- EncoderReplacementFallback.cs
- odbcmetadatacolumnnames.cs
- FixedSOMPage.cs
- xml.cs
- EntityProviderFactory.cs
- RecordManager.cs
- ConfigurationManager.cs
- CommonServiceBehaviorElement.cs
- ExponentialEase.cs
- MaskInputRejectedEventArgs.cs
- SqlConnectionString.cs
- OdbcParameter.cs
- GridView.cs
- StrongBox.cs
- Int16KeyFrameCollection.cs
- CustomAttribute.cs
- SqlGatherConsumedAliases.cs
- clipboard.cs
- WebPart.cs
- UpdateCompiler.cs
- SiteMapNodeItem.cs
- TreeNodeEventArgs.cs
- JpegBitmapEncoder.cs
- DataGridViewComboBoxEditingControl.cs
- TextSpan.cs
- HttpUnhandledOperationInvoker.cs
- ParameterSubsegment.cs
- AnnotationHelper.cs
- ToolStripOverflow.cs
- ReplyAdapterChannelListener.cs
- SafeFileMapViewHandle.cs
- PartialCachingControl.cs
- NetworkInformationPermission.cs
- DynamicHyperLink.cs
- AssemblyCollection.cs
- LayoutUtils.cs
- HttpServerVarsCollection.cs
- PageStatePersister.cs
- Dictionary.cs
- NamespaceInfo.cs
- Point.cs
- DataGridPreparingCellForEditEventArgs.cs
- SqlTriggerAttribute.cs
- AccessedThroughPropertyAttribute.cs
- DLinqDataModelProvider.cs
- GlobalProxySelection.cs
- MutexSecurity.cs
- XmlSchemas.cs
- SqlDataSourceWizardForm.cs
- ImageCreator.cs
- FixUp.cs
- AttachmentCollection.cs
- ImmutableObjectAttribute.cs
- SmtpReplyReaderFactory.cs
- ElementNotAvailableException.cs
- XmlIncludeAttribute.cs
- SchemaImporterExtension.cs
- Site.cs
- DateTimeConverter2.cs