Chromium Code Reviews| Index: tools/flags/SkCommandLineFlags.cpp |
| diff --git a/tools/flags/SkCommandLineFlags.cpp b/tools/flags/SkCommandLineFlags.cpp |
| index c25fec5343cb04f2b3744c248b163a314090b80e..faa27a6a577f6b32c36c7a3c42ccb2055e997680 100644 |
| --- a/tools/flags/SkCommandLineFlags.cpp |
| +++ b/tools/flags/SkCommandLineFlags.cpp |
| @@ -7,6 +7,7 @@ |
| #include "SkCommandLineFlags.h" |
| #include "SkTDArray.h" |
| +#include "SkTSort.h" |
| DEFINE_bool(undefok, false, "Silently ignore unknown flags instead of crashing."); |
| @@ -191,6 +192,14 @@ static void print_help_for_flag(const SkFlagInfo* flag) { |
| SkDebugf("\n"); |
| } |
| +namespace { |
| +struct CompareFlagsByName { |
| + bool operator()(SkFlagInfo* a, SkFlagInfo* b) const { |
| + return strcmp(a->name().c_str(), b->name().c_str()) < 0; |
| + } |
| +}; |
| +} // namespace |
| + |
| void SkCommandLineFlags::Parse(int argc, char** argv) { |
| // Only allow calling this function once. |
| static bool gOnce; |
| @@ -218,24 +227,32 @@ void SkCommandLineFlags::Parse(int argc, char** argv) { |
| SkDebugf("%s\n%s\n", argv[0], gUsage.c_str()); |
| } |
| SkDebugf("Flags:\n"); |
| - SkFlagInfo* flag = SkCommandLineFlags::gHead; |
| - while (flag != NULL) { |
| + |
| + if (0 == helpFlags.count()) { |
| // If no flags followed --help, print them all |
| - bool printFlag = 0 == helpFlags.count(); |
| - if (!printFlag) { |
| + SkTDArray<SkFlagInfo*> allFlags; |
| + for (SkFlagInfo* flag = SkCommandLineFlags::gHead; flag; |
| + flag = flag->next()) { |
| + allFlags.push(flag); |
| + } |
| + CompareFlagsByName c; |
| + SkTQSort(&allFlags[0], &allFlags[allFlags.count() - 1], c); |
|
mtklein
2015/01/18 15:53:10
SkTQSort(&allFlags[0], &allFlags[allFlags.count()-
|
| + for (int i = 0; i < allFlags.count(); ++i) { |
| + print_help_for_flag(allFlags[i]); |
| + } |
| + } else { |
| + SkFlagInfo* flag = SkCommandLineFlags::gHead; |
| + while (flag != NULL) { |
|
mtklein
2015/01/18 15:53:10
For consistency, switch this to the for-loop above
|
| for (int k = 0; k < helpFlags.count(); k++) { |
| if (flag->name().equals(helpFlags[k]) || |
| flag->shortName().equals(helpFlags[k])) { |
| - printFlag = true; |
| + print_help_for_flag(flag); |
| helpFlags.remove(k); |
| break; |
| } |
| } |
| + flag = flag->next(); |
| } |
| - if (printFlag) { |
| - print_help_for_flag(flag); |
| - } |
| - flag = flag->next(); |
| } |
| if (helpFlags.count() > 0) { |
| SkDebugf("Requested help for unrecognized flags:\n"); |