aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/CommandLine.cpp
diff options
context:
space:
mode:
authorRahul Joshi <rjoshi@nvidia.com>2024-08-12 20:49:18 -0700
committerGitHub <noreply@github.com>2024-08-12 20:49:18 -0700
commit136e5f4850fb40b1c2be2da5e2032ab3d85a493e (patch)
tree0c2020f88eb9fc61009bdfa7adc138ddc89ced82 /llvm/lib/Support/CommandLine.cpp
parentb4b0c0230648abb600040e1dc1c1a7ad72b68dde (diff)
downloadllvm-136e5f4850fb40b1c2be2da5e2032ab3d85a493e.zip
llvm-136e5f4850fb40b1c2be2da5e2032ab3d85a493e.tar.gz
llvm-136e5f4850fb40b1c2be2da5e2032ab3d85a493e.tar.bz2
[NFC][Support] Create helper function to parse bool (#102818)
Create a helper template function to parse bool, to eliminate code duplication.
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
-rw-r--r--llvm/lib/Support/CommandLine.cpp42
1 files changed, 18 insertions, 24 deletions
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index ecc487a..e34a770 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -404,6 +404,22 @@ private:
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