Options::Options(int const argc, char** const argv) : address("127.0.0.1"), connect(false), help(false), port(Network::defaultPort), protocol(client::Protocol::tcp), autoReady(false), threaded(true), verbosity(utility::Verbosity::info), playerFile(std::string(getenv("HOME"))+"/.nibbles/players") { std::string optionsFile = std::string(getenv("HOME"))+"/.nibbles/gtk-config"; optimal::OptionsParser parser; parser.addOption("address", 'a', &address); parser.addOption("connect", 'c', &connect); parser.addOption("font", 'f', &fontPath); parser.addOption("glade", 'g', &gladePath); parser.addOption("help", 'h', &help); parser.addOption("port", 'p', &port); parser.addOption("protocol", 'P', &protocol); parser.addOption("ready", 'r', &autoReady); parser.addOption("sounds", 's', &soundPath); parser.addOption("threaded", 't', &threaded); parser.addOption("verbosity", 'v', &verbosity); parser.addOption("players", 'y', &players, ","); parser.addOption("player-file", 'Y', &playerFile); if (parser.parse(optionsFile, argc, argv)) { std::ostringstream message; message << "error(s) processing options:\n"; copy( parser.getErrors().begin(), parser.getErrors().end(), std::ostream_iterator<std::string>(message, "\n") ); throw OptionsError(message.str()); } }
void optionsError(const char* message) { throw OptionsError(message); }