diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/slang-capability-generator/capability-generator-main.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/tools/slang-capability-generator/capability-generator-main.cpp b/tools/slang-capability-generator/capability-generator-main.cpp index 56b615330..7b7800295 100644 --- a/tools/slang-capability-generator/capability-generator-main.cpp +++ b/tools/slang-capability-generator/capability-generator-main.cpp @@ -1063,10 +1063,38 @@ SlangResult generateDocumentation( setupDocumentationHeader(sbDoc, outPath); List<StringBuilder> sbDocSections = setupDocCommentHeaderStringBuilders(); + + // Group capabilities by header group and sort alphabetically within each group + List<List<RefPtr<CapabilityDef>>> capabilitiesByHeaderGroup; + capabilitiesByHeaderGroup.setCount((UInt)AutoDocHeaderGroup::Count); + + // Collect capabilities into their respective header groups for (auto def : defs) { - printDocForCapabilityDef(sbDoc, def, sbDocSections); + if (!isInternalDef(def) && def->flavor != CapabilityFlavor::Abstract && + def->docComment.headerGroup != AutoDocHeaderGroup::Invalid) + { + capabilitiesByHeaderGroup[(UInt)def->docComment.headerGroup].add(def); + } + } + + // Sort capabilities within each header group alphabetically by name + for (auto& capabilitiesInGroup : capabilitiesByHeaderGroup) + { + capabilitiesInGroup.sort([](const RefPtr<CapabilityDef>& a, const RefPtr<CapabilityDef>& b) + { return a->name < b->name; }); } + + // Add sorted capabilities to documentation sections + for (UInt headerGroupIndex = 0; headerGroupIndex < (UInt)AutoDocHeaderGroup::Count; + headerGroupIndex++) + { + for (auto def : capabilitiesByHeaderGroup[headerGroupIndex]) + { + printDocForCapabilityDef(sbDoc, def, sbDocSections); + } + } + for (auto stringBuilder : sbDocSections) sbDoc << stringBuilder.toString(); return 1; |
