97 lines
1.9 KiB
C++
97 lines
1.9 KiB
C++
/*
|
|
* arguments.hpp
|
|
*
|
|
* Created on: 06.05.2010
|
|
* Author: gmueller
|
|
*/
|
|
|
|
#include <cstdlib>
|
|
#include <string>
|
|
#include <vector>
|
|
#include <stdexcept>
|
|
|
|
class Arguments {
|
|
std::vector<std::string> arguments;
|
|
public:
|
|
Arguments() {
|
|
}
|
|
|
|
Arguments(size_t c, const char **v) {
|
|
for (size_t i = 0; i < c; i++)
|
|
arguments.push_back(v[i]);
|
|
}
|
|
|
|
void add(const std::string &argument) {
|
|
arguments.push_back(argument);
|
|
}
|
|
|
|
int getCount() {
|
|
return arguments.size();
|
|
}
|
|
|
|
bool hasFlag(const std::string &flag) {
|
|
size_t i;
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i])
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
int getInt(const std::string &flag, int def) {
|
|
size_t i;
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i] && (i + 1 < arguments.size()))
|
|
return std::atoi(arguments[i + 1].c_str());
|
|
}
|
|
|
|
return def;
|
|
}
|
|
|
|
float getFloat(const std::string &flag, float def) {
|
|
size_t i;
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i] && (i + 1 < arguments.size()))
|
|
return std::atof(arguments[i + 1].c_str());
|
|
}
|
|
|
|
return def;
|
|
}
|
|
std::string getString(const std::string &flag, const std::string &def) {
|
|
size_t i;
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i] && (i + 1 < arguments.size()))
|
|
return std::string(arguments[i + 1]);
|
|
}
|
|
|
|
return def;
|
|
}
|
|
|
|
std::string getString(const std::string &flag) {
|
|
size_t i;
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i] && (i + 1 < arguments.size()))
|
|
return std::string(arguments[i + 1]);
|
|
}
|
|
throw std::runtime_error("Arguments: flag " + flag + " not found");
|
|
}
|
|
|
|
void getVector(const std::string &flag, std::vector<std::string> &v) {
|
|
size_t i;
|
|
|
|
// find flag
|
|
for (i = 0; i < arguments.size(); i++) {
|
|
if (flag == arguments[i])
|
|
break;
|
|
}
|
|
|
|
for (i++; i < arguments.size(); i++) {
|
|
if (arguments[i][0] != '-')
|
|
v.push_back(arguments[i]);
|
|
}
|
|
|
|
}
|
|
|
|
};
|