From d9d290c0c6a4da157b5b551ab5fab8fb062b7b11 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Tue, 13 Sep 2016 02:35:00 +0000 Subject: [PATCH] [Support][CommandLine] Add cl::getRegisteredSubcommands() This should allow users of the library to get a range to iterate through all the subcommands that are registered to the global parser. This allows users to define subcommands in libraries that self-register to have dispatch done at a different stage (like main). It allows for writing code like the following: for (auto *S : cl::getRegisteredSubcommands()) { if (*S) { // Dispatch on S->getName(). } } This change also contains tests that show this usage pattern. Reviewers: zturner, dblaikie, echristo Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D24489 llvm-svn: 281290 --- llvm/include/llvm/Support/CommandLine.h | 22 +++++++++++++++++++++ llvm/lib/Support/CommandLine.cpp | 11 +++++++++++ llvm/unittests/Support/CommandLineTest.cpp | 23 ++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/llvm/include/llvm/Support/CommandLine.h b/llvm/include/llvm/Support/CommandLine.h index a0ec2622b03c8..092dc945a3786 100644 --- a/llvm/include/llvm/Support/CommandLine.h +++ b/llvm/include/llvm/Support/CommandLine.h @@ -1736,6 +1736,28 @@ void PrintHelpMessage(bool Hidden = false, bool Categorized = false); /// than just handing around a global list. StringMap