Commit 5cd39930 authored by Stefan Westerfeld's avatar Stefan Westerfeld

Improve ArgParser.

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent febc8a07
...@@ -567,22 +567,22 @@ public: ...@@ -567,22 +567,22 @@ public:
return false; return false;
} }
bool bool
parse_opt (const string& option, int& out) parse_opt (const string& option, string& out_s)
{ {
bool found_option = false; bool found_option = false;
auto it = m_args.begin(); auto it = m_args.begin();
while (it != m_args.end()) while (it != m_args.end())
{ {
auto next_it = it + 1; auto next_it = it + 1;
if (*it == option && next_it != m_args.end()) /* --option 12345 */ if (*it == option && next_it != m_args.end()) /* --option foo */
{ {
out = atoi (next_it->c_str()); out_s = *next_it;
next_it = m_args.erase (it, it + 2); next_it = m_args.erase (it, it + 2);
found_option = true; found_option = true;
} }
else if (starts_with (*it, (option + "="))) /* --option=12345 */ else if (starts_with (*it, (option + "="))) /* --option=foo */
{ {
out = atoi (it->substr (option.size() + 1).c_str()); out_s = it->substr (option.size() + 1);
next_it = m_args.erase (it); next_it = m_args.erase (it);
found_option = true; found_option = true;
} }
...@@ -590,6 +590,41 @@ public: ...@@ -590,6 +590,41 @@ public:
} }
return found_option; return found_option;
} }
bool
parse_opt (const string& option, int& out_i)
{
string out_s;
if (parse_opt (option, out_s))
{
out_i = atoi (out_s.c_str());
return true;
}
return false;
}
bool
parse_opt (const string& option, float& out_f)
{
string out_s;
if (parse_opt (option, out_s))
{
out_f = atof (out_s.c_str());
return true;
}
return false;
}
bool
parse_opt (const string& option)
{
for (auto it = m_args.begin(); it != m_args.end(); it++)
{
if (*it == option) /* --option */
{
m_args.erase (it);
return true;
}
}
return false;
}
vector<string> vector<string>
args() args()
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment