From 9adac4069fbcc7ce5bea2c42d19c61eb1dcd7f25 Mon Sep 17 00:00:00 2001 From: aidanfnv Date: Mon, 21 Jul 2025 17:29:40 -0700 Subject: Fix capability generator to sort capabilities alphabetically within header groups (#7851) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix capability generator to sort capabilities alphabetically within header groups The slang-capability-generator now sorts capabilities alphabetically by name within each header group in the generated a3-02-reference-capability-atoms.md documentation file. This ensures consistent ordering for better readability and organization. Fixes #5030 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: aidanfnv * Regenerate capability atoms documentation with alphabetical sorting The capability generator now sorts capabilities alphabetically within each header group. This commit includes the regenerated documentation file to demonstrate the alphabetical sorting functionality implemented in the generator code. Generated with updated capability generator that sorts capabilities within groups: Targets, Stages, Versions, Extensions, Compound Capabilities, and Other. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * format code (#7853) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: aidanfnv Co-authored-by: Claude Co-authored-by: slangbot Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- .../capability-generator-main.cpp | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'tools') 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 sbDocSections = setupDocCommentHeaderStringBuilders(); + + // Group capabilities by header group and sort alphabetically within each group + List>> 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& a, const RefPtr& 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; -- cgit v1.2.3