@@ -404,6 +404,22 @@ class CommandLineParser {
404
404
405
405
static ManagedStatic<CommandLineParser> GlobalParser;
406
406
407
+ template <typename T, T TrueVal, T FalseVal>
408
+ static bool parseBool (Option &O, StringRef ArgName, StringRef Arg, T &Value) {
409
+ if (Arg == " " || Arg == " true" || Arg == " TRUE" || Arg == " True" ||
410
+ Arg == " 1" ) {
411
+ Value = TrueVal;
412
+ return false ;
413
+ }
414
+
415
+ if (Arg == " false" || Arg == " FALSE" || Arg == " False" || Arg == " 0" ) {
416
+ Value = FalseVal;
417
+ return false ;
418
+ }
419
+ return O.error (" '" + Arg +
420
+ " ' is invalid value for boolean argument! Try 0 or 1" );
421
+ }
422
+
407
423
void cl::AddLiteralOption (Option &O, StringRef Name) {
408
424
GlobalParser->addLiteralOption (O, Name);
409
425
}
@@ -1954,36 +1970,14 @@ void basic_parser_impl::printOptionName(const Option &O,
1954
1970
//
1955
1971
bool parser<bool >::parse(Option &O, StringRef ArgName, StringRef Arg,
1956
1972
bool &Value) {
1957
- if (Arg == " " || Arg == " true" || Arg == " TRUE" || Arg == " True" ||
1958
- Arg == " 1" ) {
1959
- Value = true ;
1960
- return false ;
1961
- }
1962
-
1963
- if (Arg == " false" || Arg == " FALSE" || Arg == " False" || Arg == " 0" ) {
1964
- Value = false ;
1965
- return false ;
1966
- }
1967
- return O.error (" '" + Arg +
1968
- " ' is invalid value for boolean argument! Try 0 or 1" );
1973
+ return parseBool<bool , true , false >(O, ArgName, Arg, Value);
1969
1974
}
1970
1975
1971
1976
// parser<boolOrDefault> implementation
1972
1977
//
1973
1978
bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName, StringRef Arg,
1974
1979
boolOrDefault &Value) {
1975
- if (Arg == " " || Arg == " true" || Arg == " TRUE" || Arg == " True" ||
1976
- Arg == " 1" ) {
1977
- Value = BOU_TRUE;
1978
- return false ;
1979
- }
1980
- if (Arg == " false" || Arg == " FALSE" || Arg == " False" || Arg == " 0" ) {
1981
- Value = BOU_FALSE;
1982
- return false ;
1983
- }
1984
-
1985
- return O.error (" '" + Arg +
1986
- " ' is invalid value for boolean argument! Try 0 or 1" );
1980
+ return parseBool<boolOrDefault, BOU_TRUE, BOU_FALSE>(O, ArgName, Arg, Value);
1987
1981
}
1988
1982
1989
1983
// parser<int> implementation
0 commit comments