Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ActionFrame.cs
- FactoryGenerator.cs
- MetadataItemEmitter.cs
- SyndicationSerializer.cs
- ErrorCodes.cs
- RadioButtonList.cs
- SignatureDescription.cs
- BrowserCapabilitiesFactoryBase.cs
- StrokeCollectionDefaultValueFactory.cs
- ValidationError.cs
- URLIdentityPermission.cs
- BindingExpressionBase.cs
- CompositeFontFamily.cs
- IgnoreDeviceFilterElement.cs
- ForeignKeyConstraint.cs
- FilterElement.cs
- Stack.cs
- ComponentEvent.cs
- BookmarkInfo.cs
- InheritanceContextHelper.cs
- SmtpException.cs
- IpcClientChannel.cs
- GiveFeedbackEventArgs.cs
- PolicyLevel.cs
- ValueProviderWrapper.cs
- ToolTipAutomationPeer.cs
- StrokeCollection2.cs
- CodeDirectoryCompiler.cs
- Canvas.cs
- RijndaelManagedTransform.cs
- Divide.cs
- XmlQueryRuntime.cs
- StringResourceManager.cs
- ConnectionStringsSection.cs
- MemberMaps.cs
- safesecurityhelperavalon.cs
- AsyncOperation.cs
- StylusLogic.cs
- ToolboxItemAttribute.cs
- QueueException.cs
- MiniLockedBorderGlyph.cs
- SizeFConverter.cs
- LayoutEvent.cs
- ToolStripItem.cs
- ComponentManagerBroker.cs
- RequestBringIntoViewEventArgs.cs
- AsyncCallback.cs
- TextBox.cs
- ForwardPositionQuery.cs
- DSASignatureDeformatter.cs
- WebServicesDescriptionAttribute.cs
- TreeNodeBinding.cs
- SystemIPInterfaceProperties.cs
- XmlMembersMapping.cs
- Serializer.cs
- XamlFilter.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PkcsMisc.cs
- NetworkInformationPermission.cs
- FontUnit.cs
- ComboBox.cs
- DynamicMetaObject.cs
- ContextConfiguration.cs
- TCPListener.cs
- FontFaceLayoutInfo.cs
- ScaleTransform.cs
- DirectoryNotFoundException.cs
- RealizationContext.cs
- Activator.cs
- invalidudtexception.cs
- ControlBuilderAttribute.cs
- OleDbRowUpdatedEvent.cs
- ObjectStateFormatter.cs
- FormViewInsertEventArgs.cs
- RoleManagerModule.cs
- CollectionChangeEventArgs.cs
- AssociationEndMember.cs
- TemplateBamlTreeBuilder.cs
- XmlTextReaderImplHelpers.cs
- WindowsPrincipal.cs
- DataControlLinkButton.cs
- HostProtectionException.cs
- GeometryCollection.cs
- FormViewModeEventArgs.cs
- Listbox.cs
- ProfilePropertyMetadata.cs
- Substitution.cs
- IArgumentProvider.cs
- Popup.cs
- RtfControls.cs
- SynchronizingStream.cs
- EndGetFileNameFromUserRequest.cs
- ColorConvertedBitmap.cs
- ProjectionQueryOptionExpression.cs
- MultipartIdentifier.cs
- CodePageUtils.cs
- FilePrompt.cs
- FileRecordSequence.cs
- BooleanExpr.cs
- ZipIOExtraFieldZip64Element.cs