#include "options.hpp" int Options::validateStringOption( int argc, char** argv, int argumentIndex ) { std::string argument = argv[argumentIndex]; unsigned int index = 0; while( index < validArgumentCount ) { std::string& check = validStringArguments[index]; for( unsigned int i=0;i maxFloatingValues ) { throw new std::invalid_argument("Unexpected floating value `" + argument + "`. Forget to specify an option?" ); } } if ( argument[0] == '-' && argument[1] == '-' ) { i += validateStringOption( argc, argv, i ); continue; } i += validateCharOption( argc, argv, i ); } } Options::Options( int argc, char** argv ) { validate( argc, argv ); } bool Options::getFloat( std::string name, char namec, float& found ) { for( unsigned int i=0;i 1 && arguments[i].find("=") == std::string::npos ) { throw new std::invalid_argument("Expected `=` after " + arguments[i]); } std::string::size_type sz; float retvar; try { retvar = std::stoi(values[i],&sz); } catch ( ... ) { throw new std::invalid_argument("Unable to parse " + arguments[i] + "'s value " + values[i] + " as an integer."); } if ( sz != values[i].length() ) { throw new std::invalid_argument("Unable to parse " + arguments[i] + "'s value " + values[i] + " as an integer."); } found = retvar; return true; } } return false; } bool Options::getString( std::string name, char namec, std::string& found ) { for( unsigned int i=0;i