1 #ifndef STAN_SERVICES_ARGUMENTS_CATEGORICAL_ARGUMENT_HPP 2 #define STAN_SERVICES_ARGUMENTS_CATEGORICAL_ARGUMENT_HPP 14 for (std::vector<argument*>::iterator it =
_subarguments.begin();
24 const std::string& prefix) {
26 w(prefix + indent +
_name);
28 for (std::vector<argument*>::iterator it =
_subarguments.begin();
30 (*it)->print(w, depth + 1, prefix);
43 ss << indent << subindent <<
"Valid subarguments:";
46 ss <<
" " << (*it)->name();
50 ss <<
", " << (*it)->name();
55 for (std::vector<argument*>::iterator it =
_subarguments.begin();
57 (*it)->print_help(w, depth + 1,
true);
69 bool valid_arg =
true;
71 while (good_arg && valid_arg) {
77 std::string cat_name = args.back();
79 if (cat_name ==
"help") {
84 }
else if (cat_name ==
"help-all") {
95 if (val_name == this->
name())
100 for (std::vector<argument*>::iterator it =
_subarguments.begin();
102 if ((*it)->name() == cat_name) {
104 valid_arg &= (*it)->parse_args(args, info, err, help_flag);
107 }
else if ( (*it)->name() == val_name ) {
108 valid_arg &= (*it)->parse_args(args, info, err, help_flag);
121 for (std::vector<argument*>::iterator it =
_subarguments.begin();
123 (*it)->probe_args(base_arg, w);
128 const std::string& prefix,
129 std::vector<std::string>& valid_paths) {
132 std::string new_prefix = prefix +
_name +
" ";
133 for (std::vector<argument*>::iterator it =
_subarguments.begin();
135 (*it)->find_arg(name, new_prefix, valid_paths);
143 for (std::vector<argument*>::iterator it =
_subarguments.begin();
145 if ( name == (*it)->name() )
Probability, optimization and sampling library.
std::vector< argument * > & subarguments()
static void split_arg(const std::string &arg, std::string &name, std::string &value)
argument * arg(const std::string &name)
virtual ~categorical_argument()
void find_arg(const std::string &name, const std::string &prefix, std::vector< std::string > &valid_paths)
int compute_indent(const int depth)
base_writer is an abstract base class defining the interface for Stan writer callbacks.
void print_help(interface_callbacks::writer::base_writer &w, const int depth, const bool recurse)
bool parse_args(std::vector< std::string > &args, interface_callbacks::writer::base_writer &info, interface_callbacks::writer::base_writer &err, bool &help_flag)
void print(interface_callbacks::writer::base_writer &w, const int depth, const std::string &prefix)
virtual void find_arg(const std::string &name, const std::string &prefix, std::vector< std::string > &valid_paths)
std::vector< argument * > _subarguments
virtual void probe_args(argument *base_arg, interface_callbacks::writer::base_writer &w)