Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / CacheOutputQuery.cs / 1305376 / CacheOutputQuery.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; using System.Xml.Xsl; using System.Collections.Generic; internal abstract class CacheOutputQuery : Query { internal Query input; // int count; -- we reusing it here protected ListoutputBuffer; public CacheOutputQuery(Query input) { this.input = input; this.outputBuffer = new List (); this.count = 0; } protected CacheOutputQuery(CacheOutputQuery other) : base(other) { this.input = Clone(other.input); this.outputBuffer = new List (other.outputBuffer); this.count = other.count; } public override void Reset() { this.count = 0; } public override void SetXsltContext(XsltContext context){ input.SetXsltContext(context); } public override object Evaluate(XPathNodeIterator context) { outputBuffer.Clear(); count = 0; return input.Evaluate(context);// This is trick. IDQuery needs this value. Otherwise we would return this. // All subclasses should and would anyway override thismethod and return this. } public override XPathNavigator Advance() { Debug.Assert(0 <= count && count <= outputBuffer.Count); if (count < outputBuffer.Count) { return outputBuffer[count++]; } return null; } public override XPathNavigator Current { get { Debug.Assert(0 <= count && count <= outputBuffer.Count); if (count == 0) { return null; } return outputBuffer[count - 1]; } } public override XPathResultType StaticType { get { return XPathResultType.NodeSet; } } public override int CurrentPosition { get { return count; } } public override int Count { get { return outputBuffer.Count; } } public override QueryProps Properties { get { return QueryProps.Merge | QueryProps.Cached | QueryProps.Position | QueryProps.Count; } } public override void PrintQuery(XmlWriter w) { w.WriteStartElement(this.GetType().Name); input.PrintQuery(w); w.WriteEndElement(); } } } // 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
- NativeCompoundFileAPIs.cs
- EmptyStringExpandableObjectConverter.cs
- CodeMemberEvent.cs
- Visitor.cs
- DrawingAttributeSerializer.cs
- Error.cs
- XmlSchemaValidator.cs
- MultilineStringEditor.cs
- LambdaValue.cs
- ServiceOperationParameter.cs
- BinaryParser.cs
- ActivityExecutorDelegateInfo.cs
- Span.cs
- PathSegmentCollection.cs
- BooleanFacetDescriptionElement.cs
- XmlBindingWorker.cs
- FormViewModeEventArgs.cs
- CodeDefaultValueExpression.cs
- DelayLoadType.cs
- UnauthorizedAccessException.cs
- FontFamilyIdentifier.cs
- AutomationPropertyInfo.cs
- DataGridView.cs
- InputLanguage.cs
- MarkupExtensionParser.cs
- TaskFactory.cs
- RangeValidator.cs
- AsymmetricKeyExchangeDeformatter.cs
- uribuilder.cs
- XPathNodeList.cs
- translator.cs
- EdmItemCollection.OcAssemblyCache.cs
- XmlDocumentFragment.cs
- CompositeDuplexElement.cs
- XPathBuilder.cs
- TransactionManager.cs
- DataGridViewColumnCollection.cs
- Point3DKeyFrameCollection.cs
- Keyboard.cs
- RecognizerInfo.cs
- FixedSOMPageConstructor.cs
- DesignerUtility.cs
- AtomServiceDocumentSerializer.cs
- PeerReferralPolicy.cs
- compensatingcollection.cs
- SoapInteropTypes.cs
- XmlArrayAttribute.cs
- DesignRelation.cs
- EffectiveValueEntry.cs
- TreeIterator.cs
- IntSecurity.cs
- recordstate.cs
- DeploymentExceptionMapper.cs
- RepeaterItemEventArgs.cs
- CommonDialog.cs
- TabControlAutomationPeer.cs
- TemplateXamlParser.cs
- PolicyStatement.cs
- ConfigurationSectionGroup.cs
- CodePrimitiveExpression.cs
- ConstNode.cs
- NativeRightsManagementAPIsStructures.cs
- CommandEventArgs.cs
- DatatypeImplementation.cs
- ExpressionContext.cs
- ProtocolElementCollection.cs
- CommonObjectSecurity.cs
- TextTreeRootTextBlock.cs
- InstanceKeyNotReadyException.cs
- CodeDirectiveCollection.cs
- SqlConnectionManager.cs
- CopyOnWriteList.cs
- KeyEventArgs.cs
- ProxyHelper.cs
- FixedPageProcessor.cs
- ObsoleteAttribute.cs
- SuppressIldasmAttribute.cs
- BooleanSwitch.cs
- EditingScopeUndoUnit.cs
- HttpCapabilitiesEvaluator.cs
- Delay.cs
- UnmanagedMemoryStream.cs
- AutomationIdentifier.cs
- HttpBindingExtension.cs
- NumberSubstitution.cs
- TypeExtensionSerializer.cs
- RootBrowserWindowProxy.cs
- CustomAttributeBuilder.cs
- SkewTransform.cs
- CodeNamespace.cs
- WmlCalendarAdapter.cs
- SqlConnection.cs
- DynamicExpression.cs
- CodeAttributeDeclaration.cs
- Quaternion.cs
- DerivedKeySecurityToken.cs
- CalendarDataBindingHandler.cs
- SystemColors.cs
- CancellationTokenRegistration.cs
- PropertyStore.cs