13 #ifndef MLPACK_CORE_BINDINGS_CLI_CLI_OPTION_HPP 14 #define MLPACK_CORE_BINDINGS_CLI_CLI_OPTION_HPP 69 const std::string& identifier,
70 const std::string& description,
71 const std::string& alias,
72 const std::string& cppName,
73 const bool required =
false,
74 const bool input =
true,
75 const bool noTranspose =
false,
76 const std::string& =
"")
81 data.
desc = description;
82 data.
name = identifier;
84 data.
alias = alias[0];
94 if (std::is_same<
typename std::remove_pointer<N>::type,
96 std::remove_pointer<N>::type>::type>::value)
98 data.
value = boost::any(defaultValue);
103 data.
value = boost::any(std::tuple<N, decltype(tmp)>(defaultValue, tmp));
106 const std::string tname = data.
tname;
108 typename std::remove_pointer<N>::type>(identifier);
109 std::string progOptId = (alias[0] !=
'\0') ? boostName +
"," 110 + std::string(1, alias[0]) : boostName;
113 const std::map<std::string, util::ParamData>& parameters =
115 if (parameters.count(boostName) > 0)
120 #define BASH_RED "\033[0;31m" 121 #define BASH_CLEAR "\033[0m" 124 #define BASH_CLEAR "" 134 outstr <<
"Parameter --" << boostName <<
" (" << data.
alias <<
") " 135 <<
"is defined multiple times with the same identifiers." 147 &GetPrintableParam<N>;
154 &MapParameterName<N>;
157 &GetPrintableParamName<N>;
159 &GetPrintableParamValue<N>;
161 &GetAllocatedMemory<N>;
163 &DeleteAllocatedMemory<N>;
189 const std::string& documentation);
boost::any value
The actual value that is held.
Linear algebra utility functions, generally performed on matrices or vectors.
bool wasPassed
True if the option was passed to the program.
static CLI & GetSingleton()
Retrieve the singleton.
bool persistent
If this should be preserved across different settings (i.e.
static std::map< std::string, util::ParamData > & Parameters()
Return a modifiable list of parameters that CLI knows about.
std::string desc
Description of this parameter, if any.
bool input
True if this option is an input option (otherwise, it is output).
This structure holds all of the information about a single parameter, including its value (which is s...
bool loaded
If this is an input parameter that needs extra loading, this indicates whether or not it has been loa...
#define TYPENAME(x)
The TYPENAME macro is used internally to convert a type into a string.
CLIOption(const N defaultValue, const std::string &identifier, const std::string &description, const std::string &alias, const std::string &cppName, const bool required=false, const bool input=true, const bool noTranspose=false, const std::string &="")
Construct an Option object.
char alias
Alias for this parameter.
std::string tname
Type information of this parameter.
std::string MapParameterName(const std::string &identifier, const typename boost::disable_if< arma::is_arma_type< T >>::type *=0, const typename boost::disable_if< data::HasSerialize< T >>::type *=0, const typename boost::disable_if< std::is_same< T, std::tuple< mlpack::data::DatasetInfo, arma::mat >>>::type *=0)
If needed, map the parameter name to the name that is used by boost::program_options.
A static object whose constructor registers a parameter with the CLI class.
std::string name
Name of this parameter.
bool required
True if this option is required.
A static object whose constructor registers program documentation with the CLI class.
static void Add(util::ParamData &&d)
Adds a parameter to the hierarchy; use the PARAM_*() macros instead of this (i.e. ...
std::string programName
The name of the program.
Utility struct to return the type that boost::program_options should accept for a given input type...
std::string cppType
The true name of the type, as it would be written in C++.
Allows us to output to an ostream with a prefix at the beginning of each line, in the same way we wou...
std::string documentation
Documentation for what the program does.
FunctionMapType functionMap
bool noTranspose
True if this is a matrix that should not be transposed.