Analizo
view release on metacpan or search on metacpan
t/samples/mlpack-3.0.0/parse_command_line.hpp view on Meta::CPAN
Log::Fatal << "Caught exception from parsing command line: " << ex.what()
<< std::endl;
}
// Now iterate through the filled vmap, and overwrite default values with
// anything that's found on the command line.
for (variables_map::iterator i = vmap.begin(); i != vmap.end(); ++i)
{
// There is not a possibility of an unknown option, since
// boost::program_options would have already thrown an exception. Because
// some names may be mapped, we have to look through each ParamData object
// and get its boost name.
const std::string identifier = boostNameMap[i->first];
util::ParamData& param = parameters[identifier];
param.wasPassed = true;
CLI::GetSingleton().functionMap[param.tname]["SetParam"](param,
(void*) &vmap[i->first].value(), NULL);
}
// Flush the buffer, make sure changes are propagated to vmap.
notify(vmap);
// If the user specified any of the default options (--help, --version, or
// --info), handle those.
// --version is prioritized over --help.
if (CLI::HasParam("version"))
{
std::cout << CLI::GetSingleton().ProgramName() << ": part of "
<< util::GetVersion() << "." << std::endl;
exit(0); // Don't do anything else.
}
// Default help message.
if (CLI::HasParam("help"))
{
Log::Info.ignoreInput = false;
PrintHelp();
exit(0); // The user doesn't want to run the program, he wants help.
}
// Info on a specific parameter.
if (CLI::HasParam("info"))
{
Log::Info.ignoreInput = false;
std::string str = CLI::GetParam<std::string>("info");
// The info node should always be there, but the user may not have specified
// anything.
if (str != "")
{
PrintHelp(str);
exit(0);
}
// Otherwise just print the generalized help.
PrintHelp();
exit(0);
}
// Print whether or not we have debugging symbols. This won't show anything
// if we have not compiled in debugging mode.
Log::Debug << "Compiled with debugging symbols." << std::endl;
if (CLI::HasParam("verbose"))
{
// Give [INFO ] output.
Log::Info.ignoreInput = false;
}
// Now, issue an error if we forgot any required options.
for (std::map<std::string, util::ParamData>::const_iterator iter =
parameters.begin(); iter != parameters.end(); ++iter)
{
const util::ParamData d = iter->second;
if (d.required)
{
const std::string boostName;
CLI::GetSingleton().functionMap[d.tname]["MapParameterName"](d, NULL,
(void*) &boostName);
if (!vmap.count(boostName))
{
Log::Fatal << "Required option --" << boostName << " is undefined."
<< std::endl;
}
}
}
}
} // namespace cli
} // namespace bindings
} // namespace mlpack
#endif
( run in 0.985 second using v1.01-cache-2.11-cpan-39bf76dae61 )