[Support][CommandLine] Add cl::getRegisteredSubcommands()
authorDean Michael Berris <dberris@google.com>
Tue, 13 Sep 2016 02:35:00 +0000 (02:35 +0000)
committerDean Michael Berris <dberris@google.com>
Tue, 13 Sep 2016 02:35:00 +0000 (02:35 +0000)
commitd9d290c0c6a4da157b5b551ab5fab8fb062b7b11
treefa592eaf88a10cef53e8294f837f8e7514b82377
parentb69efb9e8da31ed6713738966a0a0cce40c19873
[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
llvm/lib/Support/CommandLine.cpp
llvm/unittests/Support/CommandLineTest.cpp