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
- KoreanCalendar.cs
- SizeAnimationUsingKeyFrames.cs
- TableLayoutStyle.cs
- XMLDiffLoader.cs
- RelationshipWrapper.cs
- InlineCollection.cs
- BrowserCapabilitiesFactoryBase.cs
- WebPartDeleteVerb.cs
- WorkingDirectoryEditor.cs
- CodeCompileUnit.cs
- XmlSchemaAnnotation.cs
- RootBrowserWindowProxy.cs
- BaseProcessor.cs
- FunctionImportElement.cs
- BufferedGraphicsManager.cs
- Not.cs
- FormatConvertedBitmap.cs
- CoreChannel.cs
- SchemaCreator.cs
- DefaultValueConverter.cs
- sitestring.cs
- XslCompiledTransform.cs
- CodeMethodInvokeExpression.cs
- ContainerUIElement3D.cs
- CodeDOMUtility.cs
- CachedBitmap.cs
- DependencyPropertyConverter.cs
- DeviceContexts.cs
- HttpStaticObjectsCollectionWrapper.cs
- AxisAngleRotation3D.cs
- DecoderReplacementFallback.cs
- TableParagraph.cs
- StrokeDescriptor.cs
- DependencyPropertyKind.cs
- COM2IDispatchConverter.cs
- TemplatedWizardStep.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- WizardDesigner.cs
- ToolStripLocationCancelEventArgs.cs
- LambdaCompiler.Lambda.cs
- StaticExtensionConverter.cs
- CodeAccessSecurityEngine.cs
- UserNameSecurityTokenAuthenticator.cs
- SqlCharStream.cs
- LinkedResourceCollection.cs
- TextBoxLine.cs
- AllMembershipCondition.cs
- GenericEnumConverter.cs
- WindowsListViewGroupHelper.cs
- GroupBox.cs
- CodeTypeParameter.cs
- ShutDownListener.cs
- MenuItem.cs
- ListenerHandler.cs
- FieldBuilder.cs
- DefaultShape.cs
- OpenTypeCommon.cs
- EventHandlerList.cs
- EncryptedXml.cs
- InkCanvas.cs
- ReliabilityContractAttribute.cs
- DateTimeConstantAttribute.cs
- ValueType.cs
- MaskDescriptors.cs
- DataGridViewAutoSizeModeEventArgs.cs
- _LocalDataStoreMgr.cs
- SerTrace.cs
- SQLDecimalStorage.cs
- DateTimeStorage.cs
- WebColorConverter.cs
- WrappingXamlSchemaContext.cs
- SHA256.cs
- SatelliteContractVersionAttribute.cs
- ObjectCloneHelper.cs
- BoolExpr.cs
- BamlReader.cs
- XmlSchemaIdentityConstraint.cs
- XslNumber.cs
- SyntaxCheck.cs
- StateMachineWorkflowInstance.cs
- Matrix3D.cs
- PrintPreviewControl.cs
- ColorAnimation.cs
- FlowLayoutPanel.cs
- WebControlToolBoxItem.cs
- SqlClientMetaDataCollectionNames.cs
- Attributes.cs
- ListViewCancelEventArgs.cs
- ComponentEditorPage.cs
- AutomationProperties.cs
- RelationshipEntry.cs
- BitmapData.cs
- ChannelManager.cs
- FileSecurity.cs
- NamespaceMapping.cs
- XmlNodeList.cs
- RepeaterCommandEventArgs.cs
- DataViewManager.cs
- UniformGrid.cs
- View.cs