#include #include std::string basename(const std::string path); int prefix(const std::string shorter, const std::string longer); std::string time_out(const int _ttt); std::string toLower(const std::string a); std::string purify(const std::string arg); std::string ltrim(const std::string foo, const std::string strip = " \t\r\n"); std::string rtrim(const std::string foo, const std::string strip = " \t\r\n"); std::string trim(const std::string foo, const std::string strip = " \t\r\n"); typedef const char cc; typedef cc* str; class argParser{ public: std::list argv; std::string current_arg; argParser(const int _argc, const str _argv[]) { for (int ii=0; ii < _argc; ii++) { argv.push_back(_argv[ii]); } } std::string shift() { using namespace std; string rslt = argv.front(); argv.pop_front(); return rslt; } void next(){ current_arg = shift(); } size_t size() const { return argv.size(); } int prefix(const std::string longer, const size_t required = 0){ using namespace std; if (argv.size() < required) { if (required==1) cerr << "Option '" << current_arg << "' requires an argument." << endl; else cerr << "Option '" << current_arg << "' requires " << required << " arguments." << endl; throw int(1); } return current_arg == longer.substr(0, current_arg.length()); } };