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
- UpDownBase.cs
- DBDataPermissionAttribute.cs
- LoggedException.cs
- OpenTypeMethods.cs
- TextViewElement.cs
- XmlSchemaElement.cs
- TextSimpleMarkerProperties.cs
- RoutedEventConverter.cs
- DataGridViewCellStyleConverter.cs
- cookieexception.cs
- MailMessage.cs
- DataBindingValueUIHandler.cs
- DecoderFallback.cs
- SerializerDescriptor.cs
- EnumDataContract.cs
- ClientBuildManager.cs
- XPathSelectionIterator.cs
- ValidatorUtils.cs
- DPAPIProtectedConfigurationProvider.cs
- DictionaryChange.cs
- AxisAngleRotation3D.cs
- ConsumerConnectionPoint.cs
- ManagementOptions.cs
- Attributes.cs
- Aes.cs
- WaitHandleCannotBeOpenedException.cs
- MemberInfoSerializationHolder.cs
- BindingContext.cs
- EntryPointNotFoundException.cs
- QuaternionAnimationUsingKeyFrames.cs
- SafeBitVector32.cs
- WorkItem.cs
- Win32.cs
- MdImport.cs
- ServiceModelConfiguration.cs
- BamlLocalizableResource.cs
- dataobject.cs
- ConfigXmlElement.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- CompiledQuery.cs
- PriorityQueue.cs
- Util.cs
- ListBindingConverter.cs
- TableLayoutPanel.cs
- ModuleElement.cs
- ConsoleTraceListener.cs
- SqlUtils.cs
- Rotation3DKeyFrameCollection.cs
- ResourceExpressionEditor.cs
- PolicyException.cs
- HTMLTextWriter.cs
- AuthenticatingEventArgs.cs
- WindowsFormsHelpers.cs
- TextServicesHost.cs
- TextFormatter.cs
- PriorityChain.cs
- WindowsImpersonationContext.cs
- WebSysDefaultValueAttribute.cs
- WindowsSecurityToken.cs
- PointLightBase.cs
- StrongNameMembershipCondition.cs
- Nullable.cs
- TextSimpleMarkerProperties.cs
- ReachDocumentSequenceSerializer.cs
- LocalizationParserHooks.cs
- SnapLine.cs
- WindowsStreamSecurityElement.cs
- SmiMetaDataProperty.cs
- FreezableDefaultValueFactory.cs
- RuntimeCompatibilityAttribute.cs
- StreamGeometryContext.cs
- MSAAWinEventWrap.cs
- localization.cs
- xamlnodes.cs
- UrlMappingsModule.cs
- TrustManagerPromptUI.cs
- SafeRegistryHandle.cs
- EntityProviderServices.cs
- X509Utils.cs
- ISFClipboardData.cs
- COM2IDispatchConverter.cs
- NativeMethods.cs
- ColumnTypeConverter.cs
- TextCollapsingProperties.cs
- WriterOutput.cs
- ExpressionReplacer.cs
- EncoderFallback.cs
- FactorySettingsElement.cs
- PartialCachingControl.cs
- SettingsSavedEventArgs.cs
- DateBoldEvent.cs
- DataGridViewSelectedCellCollection.cs
- ArrayTypeMismatchException.cs
- ThousandthOfEmRealDoubles.cs
- MD5CryptoServiceProvider.cs
- TextEditorSelection.cs
- FileSystemWatcher.cs
- QueryOperationResponseOfT.cs
- Row.cs
- RegexCharClass.cs