1 #ifndef STAN__GM__ARGUMENTS__CATEGORY__ARGUMENT__BETA
2 #define STAN__GM__ARGUMENTS__CATEGORY__ARGUMENT__BETA
16 for (std::vector<argument*>::iterator it =
_subarguments.begin();
24 void print(std::ostream* s,
const int depth,
const std::string prefix) {
28 *s << prefix << indent <<
_name << std::endl;
30 for (std::vector<argument*>::iterator it =
_subarguments.begin();
32 (*it)->print(s, depth + 1, prefix);
35 void print_help(std::ostream* s,
const int depth,
const bool recurse) {
43 *s << indent <<
_name << std::endl;
46 *s << indent << subindent <<
"Valid subarguments:";
49 *s <<
" " << (*it)->name();
53 *s <<
", " << (*it)->name();
54 *s << std::endl << std::endl;
57 for (std::vector<argument*>::iterator it =
_subarguments.begin();
59 (*it)->print_help(s, depth + 1,
true);
68 bool parse_args(std::vector<std::string>& args, std::ostream* out,
69 std::ostream* err,
bool& help_flag) {
72 bool valid_arg =
true;
80 std::string cat_name = args.back();
82 if (cat_name ==
"help") {
87 }
else if (cat_name ==
"help-all") {
100 for (std::vector<argument*>::iterator it =
_subarguments.begin();
102 if ( (*it)->name() == cat_name) {
104 valid_arg &= (*it)->parse_args(args, out, err, help_flag);
107 }
else if ( (*it)->name() == val_name ) {
108 valid_arg &= (*it)->parse_args(args, out, err, help_flag);
120 for (std::vector<argument*>::iterator it =
_subarguments.begin();
122 (*it)->probe_args(base_arg, s);
128 std::vector<std::string>& valid_paths) {
132 prefix +=
_name +
" ";
133 for (std::vector<argument*>::iterator it =
_subarguments.begin();
135 (*it)->find_arg(name, prefix, valid_paths);
144 for (std::vector<argument*>::iterator it =
_subarguments.begin();
146 if ( name == (*it)->name() )
virtual ~categorical_argument()
bool parse_args(std::vector< std::string > &args, std::ostream *out, std::ostream *err, bool &help_flag)
argument * arg(const std::string name)
virtual void probe_args(argument *base_arg, std::stringstream &s)
std::vector< argument * > _subarguments
virtual void find_arg(std::string name, std::string prefix, std::vector< std::string > &valid_paths)
std::vector< argument * > & subarguments()
static void split_arg(const std::string &arg, std::string &name, std::string &value)
int compute_indent(const int depth)
void print_help(std::ostream *s, const int depth, const bool recurse)
void print(std::ostream *s, const int depth, const std::string prefix)
void find_arg(std::string name, std::string prefix, std::vector< std::string > &valid_paths)