Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / TemplateManager.cs / 1 / TemplateManager.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
using System.Collections;
internal class TemplateManager {
private XmlQualifiedName mode;
internal ArrayList templates;
private Stylesheet stylesheet; // Owning stylesheet
private class TemplateComparer : IComparer {
public int Compare(object x, object y) {
Debug.Assert(x != null && x is TemplateAction);
Debug.Assert(y != null && y is TemplateAction);
TemplateAction tx = (TemplateAction) x;
TemplateAction ty = (TemplateAction) y;
Debug.Assert(! Double.IsNaN(tx.Priority));
Debug.Assert(! Double.IsNaN(ty.Priority));
if (tx.Priority == ty.Priority) {
Debug.Assert(tx.TemplateId != ty.TemplateId || tx == ty);
return tx.TemplateId - ty.TemplateId;
}
else {
return tx.Priority > ty.Priority ? 1 : -1;
}
}
}
private static TemplateComparer s_TemplateComparer = new TemplateComparer();
internal XmlQualifiedName Mode {
get { return this.mode; }
}
internal TemplateManager(Stylesheet stylesheet, XmlQualifiedName mode) {
this.mode = mode;
this.stylesheet = stylesheet;
}
internal void AddTemplate(TemplateAction template) {
Debug.Assert(template != null);
Debug.Assert(
((object) this.mode == (object) template.Mode) ||
(template.Mode == null && this.mode.Equals(XmlQualifiedName.Empty)) ||
this.mode.Equals(template.Mode)
);
if (this.templates == null) {
this.templates = new ArrayList();
}
this.templates.Add(template);
}
internal void ProcessTemplates() {
if (this.templates != null) {
this.templates.Sort(s_TemplateComparer);
}
}
internal TemplateAction FindTemplate(Processor processor, XPathNavigator navigator) {
if (this.templates == null) {
return null;
}
Debug.Assert(this.templates != null);
for (int templateIndex = this.templates.Count - 1; templateIndex >= 0 ; templateIndex --) {
TemplateAction action = (TemplateAction) this.templates[templateIndex];
int matchKey = action.MatchKey;
if (matchKey != Compiler.InvalidQueryKey) {
if (processor.Matches(navigator, matchKey)) {
return action;
}
}
}
return null;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
using System.Collections;
internal class TemplateManager {
private XmlQualifiedName mode;
internal ArrayList templates;
private Stylesheet stylesheet; // Owning stylesheet
private class TemplateComparer : IComparer {
public int Compare(object x, object y) {
Debug.Assert(x != null && x is TemplateAction);
Debug.Assert(y != null && y is TemplateAction);
TemplateAction tx = (TemplateAction) x;
TemplateAction ty = (TemplateAction) y;
Debug.Assert(! Double.IsNaN(tx.Priority));
Debug.Assert(! Double.IsNaN(ty.Priority));
if (tx.Priority == ty.Priority) {
Debug.Assert(tx.TemplateId != ty.TemplateId || tx == ty);
return tx.TemplateId - ty.TemplateId;
}
else {
return tx.Priority > ty.Priority ? 1 : -1;
}
}
}
private static TemplateComparer s_TemplateComparer = new TemplateComparer();
internal XmlQualifiedName Mode {
get { return this.mode; }
}
internal TemplateManager(Stylesheet stylesheet, XmlQualifiedName mode) {
this.mode = mode;
this.stylesheet = stylesheet;
}
internal void AddTemplate(TemplateAction template) {
Debug.Assert(template != null);
Debug.Assert(
((object) this.mode == (object) template.Mode) ||
(template.Mode == null && this.mode.Equals(XmlQualifiedName.Empty)) ||
this.mode.Equals(template.Mode)
);
if (this.templates == null) {
this.templates = new ArrayList();
}
this.templates.Add(template);
}
internal void ProcessTemplates() {
if (this.templates != null) {
this.templates.Sort(s_TemplateComparer);
}
}
internal TemplateAction FindTemplate(Processor processor, XPathNavigator navigator) {
if (this.templates == null) {
return null;
}
Debug.Assert(this.templates != null);
for (int templateIndex = this.templates.Count - 1; templateIndex >= 0 ; templateIndex --) {
TemplateAction action = (TemplateAction) this.templates[templateIndex];
int matchKey = action.MatchKey;
if (matchKey != Compiler.InvalidQueryKey) {
if (processor.Matches(navigator, matchKey)) {
return action;
}
}
}
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
- AuthorizationRuleCollection.cs
- BaseInfoTable.cs
- GetImportFileNameRequest.cs
- FunctionQuery.cs
- DiagnosticsConfigurationHandler.cs
- FeatureSupport.cs
- SmtpMail.cs
- MethodExecutor.cs
- ExpressionCopier.cs
- RepeaterItem.cs
- GPRECTF.cs
- AddingNewEventArgs.cs
- CompoundFileStorageReference.cs
- SchemaAttDef.cs
- PageAdapter.cs
- DataControlFieldCell.cs
- OperatingSystemVersionCheck.cs
- PkcsMisc.cs
- EditorPartDesigner.cs
- Crypto.cs
- CompModSwitches.cs
- NamespaceEmitter.cs
- Byte.cs
- TypefaceMetricsCache.cs
- PageAsyncTaskManager.cs
- WindowsListViewGroup.cs
- DataServiceQuery.cs
- EncoderNLS.cs
- ValidateNames.cs
- ManifestResourceInfo.cs
- SessionStateSection.cs
- FormViewUpdatedEventArgs.cs
- ExpressionConverter.cs
- DivideByZeroException.cs
- TypeUsage.cs
- SimpleTextLine.cs
- EntryPointNotFoundException.cs
- ComponentResourceKeyConverter.cs
- IChannel.cs
- SimpleModelProvider.cs
- XmlTextWriter.cs
- PathFigureCollectionConverter.cs
- Int32RectConverter.cs
- ItemCheckedEvent.cs
- ComplexPropertyEntry.cs
- ClockController.cs
- CapiHashAlgorithm.cs
- TypeResolvingOptions.cs
- XmlSchemaSimpleTypeList.cs
- InstanceOwner.cs
- ServerReliableChannelBinder.cs
- SchemaElementDecl.cs
- RelationshipNavigation.cs
- XmlDataCollection.cs
- MethodBody.cs
- SelectionRangeConverter.cs
- LicenseException.cs
- TransformValueSerializer.cs
- Update.cs
- ContextMenuStripGroupCollection.cs
- UserInitiatedRoutedEventPermission.cs
- EventWaitHandleSecurity.cs
- RuleConditionDialog.cs
- SystemIPv6InterfaceProperties.cs
- COMException.cs
- ExtendedPropertyDescriptor.cs
- DiffuseMaterial.cs
- UIElementHelper.cs
- XmlSchemaInclude.cs
- TextParagraph.cs
- odbcmetadatafactory.cs
- CssStyleCollection.cs
- RemoteX509AsymmetricSecurityKey.cs
- TransactionManager.cs
- Panel.cs
- WindowCollection.cs
- BaseConfigurationRecord.cs
- CacheManager.cs
- TableRowsCollectionEditor.cs
- RepeaterCommandEventArgs.cs
- FrameworkObject.cs
- TreeNodeMouseHoverEvent.cs
- CmsInterop.cs
- PermissionRequestEvidence.cs
- NotificationContext.cs
- SequenceRangeCollection.cs
- AnnotationService.cs
- DataGridViewRowConverter.cs
- Visitor.cs
- RangeContentEnumerator.cs
- Config.cs
- MethodCallTranslator.cs
- FormattedText.cs
- RepeatInfo.cs
- DtdParser.cs
- TextLine.cs
- BamlBinaryReader.cs
- TopClause.cs
- RegistrationProxy.cs
- AspNetSynchronizationContext.cs