[llvm] 136e5f4 - [NFC][Support] Create helper function to parse bool (#102818)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 12 20:49:21 PDT 2024
Author: Rahul Joshi
Date: 2024-08-12T20:49:18-07:00
New Revision: 136e5f4850fb40b1c2be2da5e2032ab3d85a493e
URL: https://github.com/llvm/llvm-project/commit/136e5f4850fb40b1c2be2da5e2032ab3d85a493e
DIFF: https://github.com/llvm/llvm-project/commit/136e5f4850fb40b1c2be2da5e2032ab3d85a493e.diff
LOG: [NFC][Support] Create helper function to parse bool (#102818)
Create a helper template function to parse bool, to eliminate code
duplication.
Added:
Modified:
llvm/lib/Support/CommandLine.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index ecc487a17cccae..e34a770b1b53e5 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -404,6 +404,22 @@ class CommandLineParser {
static ManagedStatic<CommandLineParser> GlobalParser;
+template <typename T, T TrueVal, T FalseVal>
+static bool parseBool(Option &O, StringRef ArgName, StringRef Arg, T &Value) {
+ if (Arg == "" || Arg == "true" || Arg == "TRUE" || Arg == "True" ||
+ Arg == "1") {
+ Value = TrueVal;
+ return false;
+ }
+
+ if (Arg == "false" || Arg == "FALSE" || Arg == "False" || Arg == "0") {
+ Value = FalseVal;
+ return false;
+ }
+ return O.error("'" + Arg +
+ "' is invalid value for boolean argument! Try 0 or 1");
+}
+
void cl::AddLiteralOption(Option &O, StringRef Name) {
GlobalParser->addLiteralOption(O, Name);
}
@@ -1954,36 +1970,14 @@ void basic_parser_impl::printOptionName(const Option &O,
//
bool parser<bool>::parse(Option &O, StringRef ArgName, StringRef Arg,
bool &Value) {
- if (Arg == "" || Arg == "true" || Arg == "TRUE" || Arg == "True" ||
- Arg == "1") {
- Value = true;
- return false;
- }
-
- if (Arg == "false" || Arg == "FALSE" || Arg == "False" || Arg == "0") {
- Value = false;
- return false;
- }
- return O.error("'" + Arg +
- "' is invalid value for boolean argument! Try 0 or 1");
+ return parseBool<bool, true, false>(O, ArgName, Arg, Value);
}
// parser<boolOrDefault> implementation
//
bool parser<boolOrDefault>::parse(Option &O, StringRef ArgName, StringRef Arg,
boolOrDefault &Value) {
- if (Arg == "" || Arg == "true" || Arg == "TRUE" || Arg == "True" ||
- Arg == "1") {
- Value = BOU_TRUE;
- return false;
- }
- if (Arg == "false" || Arg == "FALSE" || Arg == "False" || Arg == "0") {
- Value = BOU_FALSE;
- return false;
- }
-
- return O.error("'" + Arg +
- "' is invalid value for boolean argument! Try 0 or 1");
+ return parseBool<boolOrDefault, BOU_TRUE, BOU_FALSE>(O, ArgName, Arg, Value);
}
// parser<int> implementation
More information about the llvm-commits
mailing list