Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / SubstitutionList.cs / 1305376 / SubstitutionList.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
namespace System.Xml.Xsl.Qil {
///
/// Data structure for use in CloneAndReplace
///
/// Isolates the many QilNode classes from changes in
/// the underlying data structure.
internal sealed class SubstitutionList {
//
private ArrayList s;
public SubstitutionList() {
this.s = new ArrayList(4);
}
///
/// Add a substituion pair
///
/// a node to be replaced
/// its replacement
public void AddSubstitutionPair(QilNode find, QilNode replace) {
s.Add(find);
s.Add(replace);
}
///
/// Remove the last a substituion pair
///
public void RemoveLastSubstitutionPair() {
s.RemoveRange(s.Count - 2, 2);
}
///
/// Remove the last N substitution pairs
///
public void RemoveLastNSubstitutionPairs(int n) {
Debug.Assert(n >= 0, "n must be nonnegative");
if (n > 0) {
n *= 2;
s.RemoveRange(s.Count - n, n);
}
}
///
/// Find the replacement for a node
///
/// the node to replace
/// null if no replacement is found
public QilNode FindReplacement(QilNode n) {
Debug.Assert(s.Count % 2 == 0);
for (int i = s.Count-2; i >= 0; i-=2)
if (s[i] == n)
return (QilNode)s[i+1];
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
- ApplicationFileParser.cs
- TransactedBatchingBehavior.cs
- StagingAreaInputItem.cs
- StylusCollection.cs
- EntityContainer.cs
- PermissionListSet.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- SeekableReadStream.cs
- AppSettingsExpressionBuilder.cs
- HitTestDrawingContextWalker.cs
- EntitySqlQueryCacheKey.cs
- FilterEventArgs.cs
- DbDataReader.cs
- XPathPatternBuilder.cs
- FlowDocumentPageViewerAutomationPeer.cs
- MetadataPropertyCollection.cs
- WebPartTransformerAttribute.cs
- StrongNamePublicKeyBlob.cs
- SchemaElement.cs
- ErrorStyle.cs
- ActivityExecutionWorkItem.cs
- sqlnorm.cs
- AutoGeneratedField.cs
- TemplateField.cs
- ConsumerConnectionPointCollection.cs
- XmlSerializerNamespaces.cs
- SoapDocumentServiceAttribute.cs
- ToolStripItemCollection.cs
- TextElementEditingBehaviorAttribute.cs
- FlowDocumentPage.cs
- PagesSection.cs
- HtmlInputImage.cs
- ResizingMessageFilter.cs
- MetabaseServerConfig.cs
- ColumnHeader.cs
- GlyphsSerializer.cs
- DropSource.cs
- ProtocolsConfiguration.cs
- ToolBarPanel.cs
- Geometry3D.cs
- Helper.cs
- FrameworkObject.cs
- ReadWriteSpinLock.cs
- ClrPerspective.cs
- AssemblyInfo.cs
- UriScheme.cs
- Translator.cs
- FieldBuilder.cs
- SmiGettersStream.cs
- CompatibleIComparer.cs
- AddInControllerImpl.cs
- IFlowDocumentViewer.cs
- CustomPopupPlacement.cs
- SqlRemoveConstantOrderBy.cs
- MetadataReference.cs
- DiscoveryEndpointValidator.cs
- WeakReference.cs
- OpCopier.cs
- MemberInitExpression.cs
- PropertyItemInternal.cs
- HMAC.cs
- FontFamilyValueSerializer.cs
- EventSchemaTraceListener.cs
- _TimerThread.cs
- RemotingException.cs
- BinaryMessageFormatter.cs
- PositiveTimeSpanValidator.cs
- CodeCatchClauseCollection.cs
- ContentPresenter.cs
- ThicknessAnimationBase.cs
- RangeEnumerable.cs
- PlainXmlDeserializer.cs
- SecurityImpersonationBehavior.cs
- DiscreteKeyFrames.cs
- SafeArrayRankMismatchException.cs
- XPathMessageContext.cs
- CallbackValidatorAttribute.cs
- MediaTimeline.cs
- DataRowView.cs
- ChtmlFormAdapter.cs
- Rect.cs
- ShellProvider.cs
- SafeCertificateContext.cs
- CodeChecksumPragma.cs
- ParamArrayAttribute.cs
- MethodAccessException.cs
- WebPartDesigner.cs
- pingexception.cs
- MailHeaderInfo.cs
- MediaContextNotificationWindow.cs
- XmlAttributeOverrides.cs
- PriorityItem.cs
- MediaPlayerState.cs
- GridView.cs
- AppSettingsExpressionBuilder.cs
- Html32TextWriter.cs
- FixedSOMLineRanges.cs
- TimerElapsedEvenArgs.cs
- ProcessThread.cs
- GroupItem.cs