Code:
/ 4.0 / 4.0 / 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 { Listlist; 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 { Listlist; 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
- SizeConverter.cs
- JsonMessageEncoderFactory.cs
- ObjectRef.cs
- ProgressiveCrcCalculatingStream.cs
- TextUtf8RawTextWriter.cs
- altserialization.cs
- CodeTypeOfExpression.cs
- SchemaContext.cs
- ToolStripRenderEventArgs.cs
- GeometryDrawing.cs
- ExpressionNode.cs
- SmtpDateTime.cs
- EnumType.cs
- ToolStripSplitButton.cs
- DragDrop.cs
- ToolStripLocationCancelEventArgs.cs
- ClosureBinding.cs
- TextElementEditingBehaviorAttribute.cs
- designeractionbehavior.cs
- InputScopeAttribute.cs
- Sequence.cs
- ClientConfigurationSystem.cs
- SchemaNotation.cs
- MasterPageCodeDomTreeGenerator.cs
- ForEach.cs
- WebConfigurationManager.cs
- FormViewPagerRow.cs
- CodeDomSerializerBase.cs
- ClipboardData.cs
- ViewGenerator.cs
- HttpApplication.cs
- WrappedIUnknown.cs
- Model3DCollection.cs
- ToolStripContentPanelRenderEventArgs.cs
- UserControl.cs
- BitmapEffectInputData.cs
- StringFunctions.cs
- LineBreakRecord.cs
- XmlIgnoreAttribute.cs
- DistributedTransactionPermission.cs
- ToolStripOverflowButton.cs
- UnsafeCollabNativeMethods.cs
- PaperSource.cs
- Types.cs
- ColorMap.cs
- XmlAttributes.cs
- IDispatchConstantAttribute.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- ConnectionManagementElement.cs
- EditingCommands.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SmiEventSink_Default.cs
- ClockController.cs
- Point4D.cs
- HttpModuleCollection.cs
- PolicyLevel.cs
- TextEditorParagraphs.cs
- SiteMapSection.cs
- CompilerResults.cs
- OpenFileDialog.cs
- JapaneseLunisolarCalendar.cs
- ADMembershipProvider.cs
- ClientScriptManagerWrapper.cs
- ObjectComplexPropertyMapping.cs
- HttpVersion.cs
- DecoderNLS.cs
- ExpandCollapsePattern.cs
- CallbackValidatorAttribute.cs
- ReadWriteSpinLock.cs
- AuthorizationRuleCollection.cs
- EncryptedPackage.cs
- CorrelationActionMessageFilter.cs
- BitmapImage.cs
- PerformanceCounterPermissionEntry.cs
- BamlBinaryReader.cs
- SmtpAuthenticationManager.cs
- XmlNodeList.cs
- TextElementEnumerator.cs
- DocumentViewerBase.cs
- PriorityItem.cs
- XomlCompilerError.cs
- StrongNamePublicKeyBlob.cs
- SqlWebEventProvider.cs
- RowType.cs
- RootNamespaceAttribute.cs
- TranslateTransform.cs
- ModelUIElement3D.cs
- tooltip.cs
- HttpCacheVary.cs
- Model3D.cs
- SQLDateTime.cs
- WriteTimeStream.cs
- MenuDesigner.cs
- InitializationEventAttribute.cs
- WorkerRequest.cs
- TemplateControlCodeDomTreeGenerator.cs
- TextElementEditingBehaviorAttribute.cs
- Geometry3D.cs
- EndpointDispatcherTable.cs
- SecurityTokenValidationException.cs