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
- StrokeFIndices.cs
- ServiceSecurityAuditBehavior.cs
- InvalidateEvent.cs
- ValueChangedEventManager.cs
- EntityDataSourceColumn.cs
- CommonGetThemePartSize.cs
- ParserStreamGeometryContext.cs
- mansign.cs
- GridView.cs
- Int32Rect.cs
- SystemNetworkInterface.cs
- WindowsContainer.cs
- XhtmlBasicValidationSummaryAdapter.cs
- BindingCompleteEventArgs.cs
- GraphicsPath.cs
- xamlnodes.cs
- HierarchicalDataSourceConverter.cs
- CheckBoxAutomationPeer.cs
- StyleCollectionEditor.cs
- GridView.cs
- XmlDeclaration.cs
- AvTraceFormat.cs
- ListControlConvertEventArgs.cs
- EventDescriptor.cs
- WebSysDefaultValueAttribute.cs
- TemplatePropertyEntry.cs
- SpnegoTokenAuthenticator.cs
- InvokeMethodActivity.cs
- System.Data_BID.cs
- MSAANativeProvider.cs
- GridView.cs
- FileDialog_Vista_Interop.cs
- UnsafeNativeMethods.cs
- InputLanguageEventArgs.cs
- Perspective.cs
- Pointer.cs
- SqlLiftWhereClauses.cs
- NestPullup.cs
- RegistryPermission.cs
- MD5CryptoServiceProvider.cs
- ClientUrlResolverWrapper.cs
- HttpConfigurationSystem.cs
- CodeEntryPointMethod.cs
- DiagnosticsConfiguration.cs
- Int32EqualityComparer.cs
- ReflectionServiceProvider.cs
- ManagementOptions.cs
- Set.cs
- ReadOnlyTernaryTree.cs
- ErrorProvider.cs
- odbcmetadatafactory.cs
- RegexWorker.cs
- SubMenuStyleCollection.cs
- DataGridViewCellMouseEventArgs.cs
- DataSourceHelper.cs
- SkipStoryboardToFill.cs
- SmtpSection.cs
- IndependentAnimationStorage.cs
- DoubleLinkList.cs
- ListMarkerSourceInfo.cs
- RepeatBehaviorConverter.cs
- SettingsPropertyValue.cs
- BehaviorEditorPart.cs
- BitConverter.cs
- ByteStream.cs
- XmlValidatingReaderImpl.cs
- BmpBitmapEncoder.cs
- LightweightCodeGenerator.cs
- EditorPartChrome.cs
- PopupRoot.cs
- ItemType.cs
- WindowsSlider.cs
- DataGridViewCellLinkedList.cs
- EndpointAddressMessageFilter.cs
- TokenBasedSetEnumerator.cs
- StateWorkerRequest.cs
- ImageConverter.cs
- WorkflowMarkupSerializerMapping.cs
- ParagraphVisual.cs
- RowToParametersTransformer.cs
- ListControl.cs
- ResourceManager.cs
- CodeEventReferenceExpression.cs
- Base64Stream.cs
- ListViewItem.cs
- LinkedResourceCollection.cs
- ListBase.cs
- WorkflowPageSetupDialog.cs
- GeometryModel3D.cs
- _WinHttpWebProxyDataBuilder.cs
- CompiledIdentityConstraint.cs
- WindowsStatic.cs
- ConfigurationErrorsException.cs
- TraceInternal.cs
- X509CertificateStore.cs
- WebPartTransformer.cs
- WebEventTraceProvider.cs
- SqlTopReducer.cs
- PointAnimationUsingPath.cs
- TreeNodeCollectionEditor.cs