/* * arguments.hpp * * Created on: 06.05.2010 * Author: gmueller */ #include #include #include #include class Arguments { std::vector 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 &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]); } } };