creativity
v1.3.0
Agent-based model of creativity and piracy
|
This class handles command line argument parsing. More...
#include <creativity/cmdargs/CmdArgs.hpp>
Public Member Functions | |
void | parse (int argc, char const *const *argv) |
Parses options and verifies them. More... | |
template<typename T , typename A > | |
std::enable_if< not std::is_unsigned< T >::value, boost::program_options::typed_value< std::vector< T, A > > * >::type | value (std::vector< T, A > &store) |
Takes a std::vector of values for options that store multiple values. More... | |
template<typename T , typename A > | |
std::enable_if< std::is_unsigned< T >::value, boost::program_options::typed_value< std::vector< Validation< T > > > * >::type | value (std::vector< T, A > &store) |
Takes a std::vector of values for options that store multiple values. More... | |
virtual std::string | version () const |
Returns a version string. | |
virtual std::string | versionSuffix () const |
Returns a per-executable suffix to add to the generic version string. More... | |
virtual std::string | usage () const |
Returns a usage string such as "Usage: program [ARGS]". More... | |
virtual std::string | help () const |
Returns a argument help message. | |
Static Public Member Functions | |
template<typename T > | |
static std::enable_if< not std::is_unsigned< T >::value and not std::is_same< T, bool >::value, boost::program_options::typed_value< T > *>::type | value (T &store) |
Creates an option value object without any special validation wrapper class. More... | |
template<typename T > | |
static std::enable_if< std::is_unsigned< T >::value and not std::is_same< T, bool >::value, boost::program_options::typed_value< Validation< T > > * >::type | value (T &storage) |
Creates an option value object around an unsigned primitive type, with automatic value storage and default value. More... | |
static boost::program_options::typed_value< bool > * | value (bool &store) |
Creates an option value for a boolean value, that is, for an switch without an argument, with default value as given in store . | |
template<typename V > | |
static boost::program_options::typed_value< V > * | value (typename V::value_type &store) |
Creates an option value object with explicit validation wrapper class V. More... | |
template<typename V , typename A > | |
static boost::program_options::typed_value< std::vector< V > > * | value (std::vector< typename V::value_type, A > &store) |
Creates an option value object around a vector of options with validation wrapper class V applied to each element of the vector. More... | |
template<long minimum, long denom = 1, typename T > | |
static boost::program_options::typed_value< Min< T, minimum, denom > > * | min (T &store) |
Shortcut for value<Min<T, n, d>>(val) with T last (so that it can be inferred from val ) | |
template<long maximum, long denom = 1, typename T > | |
static boost::program_options::typed_value< Max< T, maximum, denom > > * | max (T &store) |
Shortcut for value<Max<T, n, d>>(val) with T last (so that it can be inferred from val ) | |
template<long min, long max, long denom = 1, typename T > | |
static boost::program_options::typed_value< Range< T, min, max, denom > > * | range (T &store) |
Shortcut for value<Range<T, a, b, d>>(val) with T last (so that it can be inferred from val ) | |
template<long lower, long denom = 1, typename T > | |
static boost::program_options::typed_value< Above< T, lower, denom > > * | above (T &store) |
Shortcut for value<Above<T, a, d>>(val) with T last (so that it can be inferred from val ) | |
template<long upper, long denom = 1, typename T > | |
static boost::program_options::typed_value< Below< T, upper, denom > > * | below (T &store) |
Shortcut for value<Below<T, b, d>>(val) with T last (so that it can be inferred from val ) | |
Protected Member Functions | |
CmdArgs ()=default | |
Default constructor is protected; use a suitable subclass. | |
virtual void | addOptions () |
Adds options. More... | |
virtual void | postParse (boost::program_options::variables_map &vars) |
Does nothing; subclasses should override if needed to deal with argument values. More... | |
Protected Attributes | |
std::string | prog_name_ |
The program name, populated by parse(). More... | |
boost::program_options::options_description | options_ |
The options descriptions variable for all options. | |
boost::program_options::options_description | invisible_ |
Like options_, but for hidden options that aren't to be displayed in –help output. | |
boost::program_options::positional_options_description | positional_ |
Positional options object. | |
This class handles command line argument parsing.
Most options are supported both by the cli interface (to specify simulation settings) and by the gui (to specify simulation defaults).
|
protectedvirtual |
Adds options.
This method is called automatically by parse() before parsing arguments if nothing has been set in the options_ object; the default implementation adds –help and –version options. Subclasses should override and enhance to also populate options_
appropriately.
Reimplemented in creativity::cmdargs::SeriesGraphs, creativity::cmdargs::Results, creativity::cmdargs::Series, creativity::cmdargs::Data, creativity::cmdargs::SeriesQuantiles, creativity::cmdargs::Simulator, creativity::cmdargs::Info, creativity::cmdargs::GUI, and creativity::cmdargs::CLI.
void creativity::cmdargs::CmdArgs::parse | ( | int | argc, |
char const *const * | argv | ||
) |
Parses options and verifies them.
Throws an std::exception-derived exception for various errors (such as invalid arguments or invalid argument types).
A suitable method such as addCliOptions() or addGuiOptions() must have been called first: otherwise there will be no recognized options to parse.
Options that can be stored directly in the CreativitySettings object passed to the constructor are assigned directly; other variable are accessible in the variables
member.
The –help and –version arguments are handled internally: they print the requested info, then exit the program.
argc | the argc as received by main |
argv | the argv as received by main |
|
protectedvirtual |
Does nothing; subclasses should override if needed to deal with argument values.
This is called after checking for and handling –help or –version flags.
vars | the parsed variables |
Reimplemented in creativity::cmdargs::SeriesGraphs, creativity::cmdargs::Results, creativity::cmdargs::Series, creativity::cmdargs::Data, creativity::cmdargs::Simulator, creativity::cmdargs::Info, creativity::cmdargs::GUI, and creativity::cmdargs::CLI.
|
virtual |
Returns a usage string such as "Usage: program [ARGS]".
Called by help(). Subclasses should override to change the string as needed.
Reimplemented in creativity::cmdargs::SeriesGraphs, creativity::cmdargs::Results, creativity::cmdargs::Series, creativity::cmdargs::Data, creativity::cmdargs::SeriesQuantiles, creativity::cmdargs::Info, and creativity::cmdargs::GUI.
|
inlinestatic |
Creates an option value object without any special validation wrapper class.
This function participates only when T
is not an unsigned type.
store | the default value and the location to store a specified value. |
|
inlinestatic |
Creates an option value object around an unsigned primitive type, with automatic value storage and default value.
This function participates only when T
is an unsigned type, and, functionally, will ensure that a negative value such as -3 is not accepted, but will not otherwise restrict the value.
|
inlinestatic |
Creates an option value object with explicit validation wrapper class V.
store
is used for both the default and the location to store a command-line provided value.
V | a class that will throw during construction if the given value isn't valid; the class must expose a value type in value_type , which should match the given store value. |
store | the location of the default value and the location to store a given value |
|
inlinestatic |
Creates an option value object around a vector of options with validation wrapper class V applied to each element of the vector.
store
is used both for the default values and the location to store command-line provided values.
V | a class that will throw during construction if the given value isn't valid; the class must expose a value type in value_type , which must match the value_type of the given vector. |
store | the vector in which to store given values. |
|
inline |
Takes a std::vector of values for options that store multiple values.
This function participates only when the vector stores non-unsigned types.
|
inline |
Takes a std::vector of values for options that store multiple values.
This function participates only when the vector stores unsigned types.
|
virtual |
Returns a per-executable suffix to add to the generic version string.
Typically something like " -- command-line interface". Called by the default version(). The default implementation returns an empty string.
Reimplemented in creativity::cmdargs::SeriesGraphs, creativity::cmdargs::Results, creativity::cmdargs::Series, creativity::cmdargs::Data, creativity::cmdargs::SeriesQuantiles, creativity::cmdargs::Info, creativity::cmdargs::GUI, and creativity::cmdargs::CLI.
|
protected |
The program name, populated by parse().