Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: tools/SkFlags.h

Issue 12709005: Revert "Make gm use SkFlags." (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gyp/tools.gyp ('k') | tools/SkFlags.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SK_FLAGS_H 8 #ifndef SK_FLAGS_H
9 #define SK_FLAGS_H 9 #define SK_FLAGS_H
10 10
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // For access to gHead. 112 // For access to gHead.
113 friend class SkFlagInfo; 113 friend class SkFlagInfo;
114 }; 114 };
115 115
116 #define TO_STRING2(s) #s 116 #define TO_STRING2(s) #s
117 #define TO_STRING(s) TO_STRING2(s) 117 #define TO_STRING(s) TO_STRING2(s)
118 118
119 #define DEFINE_bool(name, defaultValue, helpString) \ 119 #define DEFINE_bool(name, defaultValue, helpString) \
120 bool FLAGS_##name; \ 120 bool FLAGS_##name; \
121 static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \ 121 static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \
122 NULL, \
123 &FLAGS_##name, \ 122 &FLAGS_##name, \
124 defaultValue, \ 123 defaultValue, \
125 helpString) 124 helpString)
126
127 // bool 2 allows specifying a short name. No check is done to ensure that shortN ame
128 // is actually shorter than name.
129 #define DEFINE_bool2(name, shortName, defaultValue, helpString) \
130 bool FLAGS_##name; \
131 static bool unused_##name = SkFlagInfo::CreateBoolFlag(TO_STRING(name), \
132 TO_STRING(shortName),\
133 &FLAGS_##name, \
134 defaultValue, \
135 helpString)
136 125
137 #define DECLARE_bool(name) extern bool FLAGS_##name; 126 #define DECLARE_bool(name) extern bool FLAGS_##name;
138 127
139 #define DEFINE_string(name, defaultValue, helpString) \ 128 #define DEFINE_string(name, defaultValue, helpString) \
140 SkTDArray<const char*> FLAGS_##name; \ 129 SkTDArray<const char*> FLAGS_##name; \
141 static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \ 130 static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \
142 NULL, \
143 &FLAGS_##name, \ 131 &FLAGS_##name, \
144 defaultValue, \ 132 defaultValue, \
145 helpString) 133 helpString)
146 134
147 // string2 allows specifying a short name. No check is done to ensure that short Name
148 // is actually shorter than name.
149 #define DEFINE_string2(name, shortName, defaultValue, helpString) \
150 SkTDArray<const char*> FLAGS_##name; \
151 static bool unused_##name = SkFlagInfo::CreateStringFlag(TO_STRING(name), \
152 TO_STRING(shortName), \
153 &FLAGS_##name, \
154 defaultValue, \
155 helpString)
156
157 #define DECLARE_string(name) extern SkTDArray<const char*> FLAGS_##name; 135 #define DECLARE_string(name) extern SkTDArray<const char*> FLAGS_##name;
158 136
159 #define DEFINE_int32(name, defaultValue, helpString) \ 137 #define DEFINE_int32(name, defaultValue, helpString) \
160 int32_t FLAGS_##name; \ 138 int32_t FLAGS_##name; \
161 static bool unused_##name = SkFlagInfo::CreateIntFlag(TO_STRING(name), \ 139 static bool unused_##name = SkFlagInfo::CreateIntFlag(TO_STRING(name), \
162 &FLAGS_##name, \ 140 &FLAGS_##name, \
163 defaultValue, \ 141 defaultValue, \
164 helpString) 142 helpString)
165 143
166 #define DECLARE_int32(name) extern int32_t FLAGS_##name; 144 #define DECLARE_int32(name) extern int32_t FLAGS_##name;
(...skipping 11 matching lines...) Expand all
178 156
179 public: 157 public:
180 enum FlagTypes { 158 enum FlagTypes {
181 kBool_FlagType, 159 kBool_FlagType,
182 kString_FlagType, 160 kString_FlagType,
183 kInt_FlagType, 161 kInt_FlagType,
184 kDouble_FlagType, 162 kDouble_FlagType,
185 }; 163 };
186 164
187 // Create flags of the desired type, and append to the list. 165 // Create flags of the desired type, and append to the list.
188 static bool CreateBoolFlag(const char* name, const char* shortName, bool* pB ool, 166 static bool CreateBoolFlag(const char* name, bool* pBool,
189 bool defaultValue, const char* helpString) { 167 bool defaultValue, const char* helpString) {
190 SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kBool_FlagType, helpStr ing)); 168 SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kBool_FlagType, helpStr ing));
191 info->fShortName.set(shortName);
192 info->fBoolValue = pBool; 169 info->fBoolValue = pBool;
193 *info->fBoolValue = info->fDefaultBool = defaultValue; 170 *info->fBoolValue = info->fDefaultBool = defaultValue;
194 return true; 171 return true;
195 } 172 }
196 173
197 static bool CreateStringFlag(const char* name, const char* shortName, 174 static bool CreateStringFlag(const char* name, SkTDArray<const char*>* pStri ngs,
198 SkTDArray<const char*>* pStrings,
199 const char* defaultValue, const char* helpStrin g) { 175 const char* defaultValue, const char* helpStrin g) {
200 SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kString_FlagType, helpS tring)); 176 SkFlagInfo* info = SkNEW_ARGS(SkFlagInfo, (name, kString_FlagType, helpS tring));
201 info->fShortName.set(shortName);
202 info->fDefaultString.set(defaultValue); 177 info->fDefaultString.set(defaultValue);
203 178
204 info->fStrings = pStrings; 179 info->fStrings = pStrings;
205 info->fStrings->reset(); 180 info->fStrings->reset();
206 // If default is "", leave the array empty. 181 // If default is "", leave the array empty.
207 if (info->fDefaultString.size() > 0) { 182 if (info->fDefaultString.size() > 0) {
208 info->fStrings->append(1, &defaultValue); 183 info->fStrings->append(1, &defaultValue);
209 } 184 }
210 return true; 185 return true;
211 } 186 }
(...skipping 12 matching lines...) Expand all
224 info->fDoubleValue = pDouble; 199 info->fDoubleValue = pDouble;
225 *info->fDoubleValue = info->fDefaultDouble = defaultValue; 200 *info->fDoubleValue = info->fDefaultDouble = defaultValue;
226 return true; 201 return true;
227 } 202 }
228 203
229 /** 204 /**
230 * Returns true if the string matches this flag. For a bool, also sets the 205 * Returns true if the string matches this flag. For a bool, also sets the
231 * value, since a bool is specified as true or false by --name or --noname. 206 * value, since a bool is specified as true or false by --name or --noname.
232 */ 207 */
233 bool match(const char* string) { 208 bool match(const char* string) {
234 if (SkStrStartsWith(string, '-') && strlen(string) > 1) { 209 if (SkStrStartsWith(string, '-')) {
235 string++; 210 string++;
236 // Allow one or two dashes 211 // Allow one or two dashes
237 if (SkStrStartsWith(string, '-') && strlen(string) > 1) { 212 if (SkStrStartsWith(string, '-')) {
238 string++; 213 string++;
239 } 214 }
240 if (kBool_FlagType == fFlagType) { 215 if (kBool_FlagType == fFlagType) {
241 // In this case, go ahead and set the value. 216 // In this case, go ahead and set the value.
242 if (fName.equals(string) || fShortName.equals(string)) { 217 if (fName.equals(string)) {
243 *fBoolValue = true; 218 *fBoolValue = true;
244 return true; 219 return true;
245 } 220 }
246 if (SkStrStartsWith(string, "no") && strlen(string) > 2) { 221 SkString noname(fName);
247 string += 2; 222 noname.prepend("no");
248 if (fName.equals(string) || fShortName.equals(string)) { 223 if (noname.equals(string)) {
249 *fBoolValue = false; 224 *fBoolValue = false;
250 return true; 225 return true;
251 }
252 return false;
253 } 226 }
227 return false;
254 } 228 }
255 return fName.equals(string) || fShortName.equals(string); 229 return fName.equals(string);
256 } else { 230 } else {
257 // Has no dash 231 // Has no dash
258 return false; 232 return false;
259 } 233 }
260 return false; 234 return false;
261 } 235 }
262 236
263 FlagTypes getFlagType() const { return fFlagType; } 237 FlagTypes getFlagType() const { return fFlagType; }
264 238
265 void resetStrings() { 239 void resetStrings() {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 , fIntValue(NULL) 320 , fIntValue(NULL)
347 , fDefaultInt(0) 321 , fDefaultInt(0)
348 , fDoubleValue(NULL) 322 , fDoubleValue(NULL)
349 , fDefaultDouble(0) 323 , fDefaultDouble(0)
350 , fStrings(NULL) { 324 , fStrings(NULL) {
351 fNext = SkFlags::gHead; 325 fNext = SkFlags::gHead;
352 SkFlags::gHead = this; 326 SkFlags::gHead = this;
353 } 327 }
354 // Name of the flag, without initial dashes 328 // Name of the flag, without initial dashes
355 SkString fName; 329 SkString fName;
356 SkString fShortName;
357 FlagTypes fFlagType; 330 FlagTypes fFlagType;
358 SkString fHelpString; 331 SkString fHelpString;
359 bool* fBoolValue; 332 bool* fBoolValue;
360 bool fDefaultBool; 333 bool fDefaultBool;
361 int32_t* fIntValue; 334 int32_t* fIntValue;
362 int32_t fDefaultInt; 335 int32_t fDefaultInt;
363 double* fDoubleValue; 336 double* fDoubleValue;
364 double fDefaultDouble; 337 double fDefaultDouble;
365 SkTDArray<const char*>* fStrings; 338 SkTDArray<const char*>* fStrings;
366 // Both for the help string and in case fStrings is empty. 339 // Both for the help string and in case fStrings is empty.
367 SkString fDefaultString; 340 SkString fDefaultString;
368 341
369 // In order to keep a linked list. 342 // In order to keep a linked list.
370 SkFlagInfo* fNext; 343 SkFlagInfo* fNext;
371 }; 344 };
372 #endif // SK_FLAGS_H 345 #endif // SK_FLAGS_H
OLDNEW
« no previous file with comments | « gyp/tools.gyp ('k') | tools/SkFlags.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698