| Index: tools/SkFlags.h
|
| diff --git a/tools/SkFlags.h b/tools/SkFlags.h
|
| index d40cdd06f3af5c96074b279af6c01c1a4347b2d6..79cc8788a3b26f93393f519ce0014ebbe79dd532 100644
|
| --- a/tools/SkFlags.h
|
| +++ b/tools/SkFlags.h
|
| @@ -119,6 +119,17 @@ private:
|
| #define DEFINE_bool(name, defaultValue, helpString) \
|
| bool FLAGS_##name; \
|
| static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \
|
| + NULL, \
|
| + &FLAGS_##name, \
|
| + defaultValue, \
|
| + helpString)
|
| +
|
| +// bool 2 allows specifying a short name. No check is done to ensure that shortName
|
| +// is actually shorter than name.
|
| +#define DEFINE_bool2(name, shortName, defaultValue, helpString) \
|
| +bool FLAGS_##name; \
|
| +static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \
|
| + TO_STRING(shortName),\
|
| &FLAGS_##name, \
|
| defaultValue, \
|
| helpString)
|
| @@ -128,10 +139,21 @@ static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \
|
| #define DEFINE_string(name, defaultValue, helpString) \
|
| SkTDArray<const char*> FLAGS_##name; \
|
| static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \
|
| + NULL, \
|
| &FLAGS_##name, \
|
| defaultValue, \
|
| helpString)
|
|
|
| +// string2 allows specifying a short name. No check is done to ensure that shortName
|
| +// is actually shorter than name.
|
| +#define DEFINE_string2(name, shortName, defaultValue, helpString) \
|
| +SkTDArray<const char*> FLAGS_##name; \
|
| +static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \
|
| + TO_STRING(shortName), \
|
| + &FLAGS_##name, \
|
| + defaultValue, \
|
| + helpString)
|
| +
|
| #define DECLARE_string(name) extern SkTDArray<const char*> FLAGS_##name;
|
|
|
| #define DEFINE_int32(name, defaultValue, helpString) \
|
| @@ -163,17 +185,20 @@ public:
|
| };
|
|
|
| // Create flags of the desired type, and append to the list.
|
| - static bool CreateBoolFlag(const char* name, bool* pBool,
|
| + static bool CreateBoolFlag(const char* name, const char* shortName, bool* pBool,
|
| bool defaultValue, const char* helpString) {
|
| SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kBool_FlagType, helpString));
|
| + info->fShortName.set(shortName);
|
| info->fBoolValue = pBool;
|
| *info->fBoolValue = info->fDefaultBool = defaultValue;
|
| return true;
|
| }
|
|
|
| - static bool CreateStringFlag(const char* name, SkTDArray<const char*>* pStrings,
|
| + static bool CreateStringFlag(const char* name, const char* shortName,
|
| + SkTDArray<const char*>* pStrings,
|
| const char* defaultValue, const char* helpString) {
|
| SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kString_FlagType, helpString));
|
| + info->fShortName.set(shortName);
|
| info->fDefaultString.set(defaultValue);
|
|
|
| info->fStrings = pStrings;
|
| @@ -206,27 +231,28 @@ public:
|
| * value, since a bool is specified as true or false by --name or --noname.
|
| */
|
| bool match(const char* string) {
|
| - if (SkStrStartsWith(string, '-')) {
|
| + if (SkStrStartsWith(string, '-') && strlen(string) > 1) {
|
| string++;
|
| // Allow one or two dashes
|
| - if (SkStrStartsWith(string, '-')) {
|
| + if (SkStrStartsWith(string, '-') && strlen(string) > 1) {
|
| string++;
|
| }
|
| if (kBool_FlagType == fFlagType) {
|
| // In this case, go ahead and set the value.
|
| - if (fName.equals(string)) {
|
| + if (fName.equals(string) || fShortName.equals(string)) {
|
| *fBoolValue = true;
|
| return true;
|
| }
|
| - SkString noname(fName);
|
| - noname.prepend("no");
|
| - if (noname.equals(string)) {
|
| - *fBoolValue = false;
|
| - return true;
|
| + if (SkStrStartsWith(string, "no") && strlen(string) > 2) {
|
| + string += 2;
|
| + if (fName.equals(string) || fShortName.equals(string)) {
|
| + *fBoolValue = false;
|
| + return true;
|
| + }
|
| + return false;
|
| }
|
| - return false;
|
| }
|
| - return fName.equals(string);
|
| + return fName.equals(string) || fShortName.equals(string);
|
| } else {
|
| // Has no dash
|
| return false;
|
| @@ -327,6 +353,7 @@ private:
|
| }
|
| // Name of the flag, without initial dashes
|
| SkString fName;
|
| + SkString fShortName;
|
| FlagTypes fFlagType;
|
| SkString fHelpString;
|
| bool* fBoolValue;
|
|
|