Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / DescendantOverDescendantQuery.cs / 1305376 / DescendantOverDescendantQuery.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Diagnostics; // DescendantOverDescendantQuery: for each input it looks for the topmost descendents that matches to ns:name // This is posible when query which has this query as its input (child query) is descendent as well. // Work of this query doesn't depend on DOD of its input. // It doesn't garate DOD of the output even when input is DOD. internal sealed class DescendantOverDescendantQuery : DescendantBaseQuery { private int level = 0; public DescendantOverDescendantQuery(Query qyParent, bool matchSelf, string name, string prefix, XPathNodeType typeTest, bool abbrAxis) : base(qyParent, name, prefix, typeTest, matchSelf, abbrAxis) {} private DescendantOverDescendantQuery(DescendantOverDescendantQuery other) : base(other) { this.level = other.level; } public override void Reset() { level = 0; base.Reset(); } public override XPathNavigator Advance() { while (true) { if (level == 0) { currentNode = qyInput.Advance(); position = 0; if (currentNode == null) { return null; } if (matchSelf && matches(currentNode)) { position = 1; return currentNode; } currentNode = currentNode.Clone(); if (! MoveToFirstChild()) { continue; } } else { if (!MoveUpUntillNext()) { continue; } } do { if (matches(currentNode)) { position++; return currentNode; } } while (MoveToFirstChild()); } } private bool MoveToFirstChild() { if (currentNode.MoveToFirstChild()) { level++; return true; } return false; } private bool MoveUpUntillNext() { // move up untill we can move next while (! currentNode.MoveToNext()) { -- level; if (level == 0) { return false; } bool result = currentNode.MoveToParent(); Debug.Assert(result, "Algorithm error, We always should be able to move up if level > 0"); } return true; } public override XPathNodeIterator Clone() { return new DescendantOverDescendantQuery(this); } } } // 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
- Propagator.cs
- PasswordBox.cs
- ObsoleteAttribute.cs
- SortDescriptionCollection.cs
- ExpressionBuilderCollection.cs
- StorageMappingItemLoader.cs
- OperationCanceledException.cs
- WindowsClientElement.cs
- StaticExtensionConverter.cs
- NewArray.cs
- DetailsViewUpdatedEventArgs.cs
- InternalsVisibleToAttribute.cs
- _NetworkingPerfCounters.cs
- BuilderPropertyEntry.cs
- FixedTextView.cs
- WebPartActionVerb.cs
- MimeMultiPart.cs
- Figure.cs
- JpegBitmapEncoder.cs
- ValidationErrorCollection.cs
- WindowsListViewItemStartMenu.cs
- Canvas.cs
- MatrixUtil.cs
- X509SecurityTokenProvider.cs
- CultureInfoConverter.cs
- Preprocessor.cs
- Triplet.cs
- StringArrayConverter.cs
- ProgressPage.cs
- PrivateFontCollection.cs
- Condition.cs
- DbExpressionBuilder.cs
- UnsafeNativeMethodsMilCoreApi.cs
- WeakHashtable.cs
- DecoderExceptionFallback.cs
- ComboBox.cs
- Resources.Designer.cs
- MembershipSection.cs
- ToolStripStatusLabel.cs
- CardSpacePolicyElement.cs
- MenuBase.cs
- XmlSerializationReader.cs
- DeploymentSection.cs
- Sql8ConformanceChecker.cs
- RecognitionResult.cs
- StandardOleMarshalObject.cs
- ConfigXmlAttribute.cs
- ScriptingScriptResourceHandlerSection.cs
- WindowsFormsSectionHandler.cs
- PreProcessor.cs
- GorillaCodec.cs
- AbstractExpressions.cs
- VolatileEnlistmentMultiplexing.cs
- _NetworkingPerfCounters.cs
- complextypematerializer.cs
- OracleCommandSet.cs
- BitmapEffectDrawingContextState.cs
- ArraySegment.cs
- PasswordBoxAutomationPeer.cs
- ConsumerConnectionPointCollection.cs
- XComponentModel.cs
- SchemaTableColumn.cs
- RectAnimation.cs
- EdmSchemaError.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ListViewGroupConverter.cs
- ServiceContractListItem.cs
- SupportsEventValidationAttribute.cs
- ReverseQueryOperator.cs
- DataTableMapping.cs
- RequestCachePolicy.cs
- MutableAssemblyCacheEntry.cs
- NTAccount.cs
- DBParameter.cs
- CapabilitiesPattern.cs
- DPAPIProtectedConfigurationProvider.cs
- WmlPageAdapter.cs
- FileNotFoundException.cs
- ContravarianceAdapter.cs
- TableChangeProcessor.cs
- SequenceDesigner.cs
- XmlTextWriter.cs
- SystemSounds.cs
- DataControlFieldTypeEditor.cs
- AudioStateChangedEventArgs.cs
- OleDbParameterCollection.cs
- SqlServices.cs
- ReaderWriterLock.cs
- ClientSettings.cs
- XmlQueryType.cs
- XmlnsCache.cs
- ListViewItem.cs
- DesignTimeHTMLTextWriter.cs
- ScrollItemProviderWrapper.cs
- InternalControlCollection.cs
- ResourceContainer.cs
- Setter.cs
- _Connection.cs
- SqlResolver.cs
- MenuRendererStandards.cs