Chromium Code Reviews| Index: tools/flags/SkCommandLineFlags.h |
| diff --git a/tools/flags/SkCommandLineFlags.h b/tools/flags/SkCommandLineFlags.h |
| index 5909413523143f87fd9d25eab0d565a37d82c082..909718d3e79fa404c273541d4db89455176821e9 100644 |
| --- a/tools/flags/SkCommandLineFlags.h |
| +++ b/tools/flags/SkCommandLineFlags.h |
| @@ -76,6 +76,11 @@ |
| * as its value. All strings that follow the flag on the command line (until |
| * a string that begins with '-') will be entries in the array. |
| * |
| + * DEFINE_extended_string(args, .., .., extendedHelpString); |
| + * |
| + * creates a similar string array flag as DEFINE_string. The flag will have extended help text |
| + * (extendedHelpString) that can the user can see with '--help <args>' flag. |
| + * |
| * Any flag can be referenced from another file after using the following: |
| * |
| * DECLARE_x(name); |
| @@ -114,6 +119,10 @@ public: |
| */ |
| class StringArray { |
| public: |
| + StringArray() { } |
|
Kimmo Kinnunen
2015/12/17 05:57:53
Mike, I meant this addition.
This enables the test
mtklein
2015/12/17 14:50:50
Oh, sure, lgtm!
|
| + explicit StringArray(const SkTArray<SkString>& strings) |
| + : fStrings(strings) { |
| + } |
| const char* operator[](int i) const { |
| SkASSERT(i >= 0 && i < fStrings.count()); |
| return fStrings[i].c_str(); |
| @@ -204,7 +213,15 @@ SK_UNUSED static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(nam |
| nullptr, \ |
| &FLAGS_##name, \ |
| defaultValue, \ |
| - helpString) |
| + helpString, nullptr) |
| +#define DEFINE_extended_string(name, defaultValue, helpString, extendedHelpString) \ |
| +SkCommandLineFlags::StringArray FLAGS_##name; \ |
| +SK_UNUSED static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \ |
| + nullptr, \ |
| + &FLAGS_##name, \ |
| + defaultValue, \ |
| + helpString, \ |
| + extendedHelpString) |
| // string2 allows specifying a short name. There is an assert that shortName |
| // is only 1 character. |
| @@ -214,7 +231,7 @@ SK_UNUSED static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(nam |
| TO_STRING(shortName), \ |
| &FLAGS_##name, \ |
| defaultValue, \ |
| - helpString) |
| + helpString, nullptr) |
| #define DECLARE_string(name) extern SkCommandLineFlags::StringArray FLAGS_##name; |
| @@ -273,7 +290,7 @@ public: |
| */ |
| static bool CreateBoolFlag(const char* name, const char* shortName, bool* pBool, |
| bool defaultValue, const char* helpString) { |
| - SkFlagInfo* info = new SkFlagInfo(name, shortName, kBool_FlagType, helpString); |
| + SkFlagInfo* info = new SkFlagInfo(name, shortName, kBool_FlagType, helpString, nullptr); |
| info->fBoolValue = pBool; |
| *info->fBoolValue = info->fDefaultBool = defaultValue; |
| return true; |
| @@ -287,14 +304,15 @@ public: |
| */ |
| static bool CreateStringFlag(const char* name, const char* shortName, |
| SkCommandLineFlags::StringArray* pStrings, |
| - const char* defaultValue, const char* helpString); |
| + const char* defaultValue, const char* helpString, |
| + const char* extendedHelpString); |
| /** |
| * See comments for CreateBoolFlag. |
| */ |
| static bool CreateIntFlag(const char* name, int32_t* pInt, |
| int32_t defaultValue, const char* helpString) { |
| - SkFlagInfo* info = new SkFlagInfo(name, nullptr, kInt_FlagType, helpString); |
| + SkFlagInfo* info = new SkFlagInfo(name, nullptr, kInt_FlagType, helpString, nullptr); |
| info->fIntValue = pInt; |
| *info->fIntValue = info->fDefaultInt = defaultValue; |
| return true; |
| @@ -302,7 +320,7 @@ public: |
| static bool CreateIntFlag(const char* name, const char* shortName, int32_t* pInt, |
| int32_t defaultValue, const char* helpString) { |
| - SkFlagInfo* info = new SkFlagInfo(name, shortName, kInt_FlagType, helpString); |
| + SkFlagInfo* info = new SkFlagInfo(name, shortName, kInt_FlagType, helpString, nullptr); |
| info->fIntValue = pInt; |
| *info->fIntValue = info->fDefaultInt = defaultValue; |
| return true; |
| @@ -313,7 +331,7 @@ public: |
| */ |
| static bool CreateDoubleFlag(const char* name, double* pDouble, |
| double defaultValue, const char* helpString) { |
| - SkFlagInfo* info = new SkFlagInfo(name, nullptr, kDouble_FlagType, helpString); |
| + SkFlagInfo* info = new SkFlagInfo(name, nullptr, kDouble_FlagType, helpString, nullptr); |
| info->fDoubleValue = pDouble; |
| *info->fDoubleValue = info->fDefaultDouble = defaultValue; |
| return true; |
| @@ -383,6 +401,7 @@ public: |
| const SkString& shortName() const { return fShortName; } |
| const SkString& help() const { return fHelpString; } |
| + const SkString& extendedHelp() const { return fExtendedHelpString; } |
| SkString defaultValue() const { |
| SkString result; |
| @@ -421,11 +440,13 @@ public: |
| } |
| private: |
| - SkFlagInfo(const char* name, const char* shortName, FlagTypes type, const char* helpString) |
| + SkFlagInfo(const char* name, const char* shortName, FlagTypes type, const char* helpString, |
| + const char* extendedHelpString) |
| : fName(name) |
| , fShortName(shortName) |
| , fFlagType(type) |
| , fHelpString(helpString) |
| + , fExtendedHelpString(extendedHelpString) |
| , fBoolValue(nullptr) |
| , fDefaultBool(false) |
| , fIntValue(nullptr) |
| @@ -453,6 +474,7 @@ private: |
| SkString fShortName; |
| FlagTypes fFlagType; |
| SkString fHelpString; |
| + SkString fExtendedHelpString; |
| bool* fBoolValue; |
| bool fDefaultBool; |
| int32_t* fIntValue; |