gremlin/src/common/Arguments.h

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]);
}
}
};