passman/parameterparser.cpp
2020-04-20 08:18:19 +02:00

57 lines
1.5 KiB
C++
Executable file

#include "parameterparser.h"
#include <iostream>
parameterparser::parameterparser(int argc, char *argv[])
{
parse(argc, argv);
}
void parameterparser::parse(int argc, char *argv[])
{
arg_names.emplace_back("program");
arg_values.emplace_back("");
for (int i = 1; i < argc; i++)
{
if (argv[i][0] == '-' && argv[i][1] == '-')
{
//Parameter ex.(--parameter)
arg_names.emplace_back(argv[i]);
arg_values.emplace_back("");
} else if (argv[i][0] == '-') {
//Parameter ex.(-p)
for (int j = 1; argv[i][j] != '\0'; j++)
{
arg_names.emplace_back(std::string(1, argv[i][j]));
arg_values.emplace_back("");
}
} else {
//Parameter Value
arg_values[arg_values.size() - 1] = argv[i];
}
}
}
bool parameterparser::has_parameter(std::string parameter_name, char parameter_abbr)
{
return get_value(parameter_name, parameter_abbr) == "-" ? false : true;
}
std::string parameterparser::get_value(std::string parameter_name, char parameter_abbr)
{
parameter_name = "--" + parameter_name;
for (unsigned long i = 0; i < arg_names.size(); i++)
{
if (arg_names[i].compare(parameter_name) == 0)
{
return arg_values[i];
}
if (arg_names[i].compare(std::string(1, parameter_abbr)) == 0)
{
return arg_values[i];
}
}
return "-";
}