internal void AddTemplate(TemplateAction template) {
XmlQualifiedName mode = template.Mode;
//
// Ensure template has a unique name
//
Debug.Assert(this.templateNameTable != null);
if (template.Name != null) {
if (this.templateNameTable.ContainsKey(template.Name) == false) {
this.templateNameTable[template.Name] = template;
}
else {
throw XsltException.Create(Res.Xslt_DupTemplateName, template.Name.ToString());
}
}
if (template.MatchKey != Compiler.InvalidQueryKey) {
if (this.modeManagers == null) {
this.modeManagers = new Hashtable();
}
Debug.Assert(this.modeManagers != null);
if (mode == null) {
mode = XmlQualifiedName.Empty;
}
TemplateManager manager = (TemplateManager) this.modeManagers[mode];
if (manager == null) {
manager = new TemplateManager(this, mode);
this.modeManagers[mode] = manager;
if (mode.IsEmpty) {
Debug.Assert(this.templates == null);
this.templates = manager;
}
}
Debug.Assert(manager != null);
template.TemplateId = ++ this.templateCount;
manager.AddTemplate(template);
}
}