Explorar o código

LibCore: Support Vector<String> positional arguments

We already supported Vector<char const*>, so let's add Vector<String>
as well. :^)
Andreas Kling %!s(int64=4) %!d(string=hai) anos
pai
achega
695cdf7bc0

+ 15 - 0
Userland/Libraries/LibCore/ArgsParser.cpp

@@ -400,4 +400,19 @@ void ArgsParser::add_positional_argument(Vector<const char*>& values, const char
     add_positional_argument(move(arg));
 }
 
+void ArgsParser::add_positional_argument(Vector<String>& values, const char* help_string, const char* name, Required required)
+{
+    Arg arg {
+        help_string,
+        name,
+        required == Required::Yes ? 1 : 0,
+        INT_MAX,
+        [&values](const char* s) {
+            values.append(s);
+            return true;
+        }
+    };
+    add_positional_argument(move(arg));
+}
+
 }

+ 1 - 0
Userland/Libraries/LibCore/ArgsParser.h

@@ -64,6 +64,7 @@ public:
     void add_positional_argument(int& value, const char* help_string, const char* name, Required required = Required::Yes);
     void add_positional_argument(double& value, const char* help_string, const char* name, Required required = Required::Yes);
     void add_positional_argument(Vector<const char*>& value, const char* help_string, const char* name, Required required = Required::Yes);
+    void add_positional_argument(Vector<String>& value, const char* help_string, const char* name, Required required = Required::Yes);
 
 private:
     Vector<Option> m_options;