void IApiDocTemplateProcessor.Process(ClassifierListTemplate template) { List<DoxClassifier> classifiers; if (this.currentNamespace != null) { classifiers = this.currentNamespace.Classifiers.ToList(); } else { classifiers = (from c in this.model.Compounds where c is DoxClassifier select (DoxClassifier)c).ToList(); } int i = 0; while (i < classifiers.Count) { foreach (var ic in classifiers[i].InnerClassifiers) { if (!classifiers.Contains(ic)) classifiers.Add(ic); } ++i; } classifiers.RemoveAll(c => !SelectClassifier(c, template)); classifiers = classifiers.OrderBy(c => c.Name).ToList(); foreach (var c in classifiers) { this.currentClassifier = c; string name = generator.NormalizeName(c.Name); if (currentNamespace != null) { name = generator.NormalizeName(c.Name); } generator.PrintSection(c.Kind + ": " + name, c.Identifier); this.generator.NextSectionLevel(); template.ProcessItems(this); this.generator.PreviousSectionLevel(); this.currentClassifier = null; } }
private static bool SelectClassifier(DoxClassifier c, ClassifierListTemplate template) { if (template is InterfaceListTemplate) { return c.Kind == CompoundKind.Interface; } else if (template is ClassListTemplate) { return c.Kind == CompoundKind.Class; } else if (template is StructListTemplate) { return c.Kind == CompoundKind.Struct; } else if (template is EnumListTemplate) { return c.Kind == CompoundKind.Enum; } else { return c.Kind == CompoundKind.Interface || c.Kind == CompoundKind.Class || c.Kind == CompoundKind.Struct || c.Kind == CompoundKind.Enum; } }