68 ,PARSE_HELP_PRINTED = 1
69 ,PARSE_UNRECOGNIZED_OPTION = 2
94 bool throwExceptions =
true
95 ,
bool recogniseAllOptions =
true
96 ,
bool addOutputSetupOptions =
false
109 void throwExceptions(
const bool & throwExceptions );
112 bool throwExceptions()
const;
115 void recogniseAllOptions(
const bool & recogniseAllOptions );
118 bool recogniseAllOptions()
const;
121 void addOutputSetupOptions(
const bool &addOutputSetupOptions );
124 bool addOutputSetupOptions()
const;
151 ,
const char documentation[] =
NULL
167 ,
const char documentation[] =
NULL
168 ,
const bool required =
false
184 ,
const char documentation[] =
NULL
185 ,
const bool required =
false
201 ,
const char documentation[] =
NULL
202 ,
const bool required =
false
218 ,
const char documentation[] =
NULL
219 ,
const bool required =
false
235 ,
const char documentation[] =
NULL
236 ,
const bool required =
false
252 ,
const char documentation[] =
NULL
253 ,
const bool required =
false
269 ,
const char documentation[] =
NULL
270 ,
const bool required =
false
301 template <
class EType>
304 EType* enum_option_val,
305 const int num_enum_opt_values,
306 const EType enum_opt_values[],
307 const char *
const enum_opt_names[],
308 const char documentation[] =
nullptr,
309 const bool required =
false );
375 EParseCommandLineReturn parse(
378 ,std::ostream *
errout = &std::cerr
394 void printHelpMessage(
const char program_name[], std::ostream &out )
const;
407 enum EOptType { OPT_NONE, OPT_BOOL_TRUE, OPT_BOOL_FALSE, OPT_INT, OPT_LONG_INT, OPT_SIZE_T,
409 OPT_DOUBLE, OPT_FLOAT, OPT_STRING, OPT_ENUM_INT };
426 struct opt_val_val_t {
432 opt_val_val_t( EOptType opt_type_in,
const any& opt_val_in,
bool required_in )
433 :opt_type(opt_type_in),opt_val(opt_val_in),required(required_in),was_read(false)
449 opt_doc_t(EOptType opt_type_in,
const std::string& opt_name_in,
const std::string& opt_name_false_in
450 ,
const std::string &documentation_in,
const any &default_val_in )
451 :opt_type(opt_type_in),opt_name(opt_name_in),opt_name_false(opt_name_false_in)
452 ,documentation(documentation_in),default_val(default_val_in)
455 std::string opt_name;
456 std::string opt_name_false;
457 std::string documentation;
462 typedef std::vector<opt_doc_t> options_documentation_list_t;
465 struct enum_opt_data_t {
467 :enum_option_val(NULL), num_enum_opt_values(0)
470 int* _enum_option_val
471 ,
const int _num_enum_opt_values
472 ,
const int _enum_opt_values[]
473 ,
const char *
const _enum_opt_names[]
475 :enum_option_val(_enum_option_val),
476 num_enum_opt_values(_num_enum_opt_values),
477 enum_opt_values(_enum_opt_values,_enum_opt_values+_num_enum_opt_values)
479 for(
int k = 0; k < num_enum_opt_values; ++k )
480 enum_opt_names.push_back(std::string(_enum_opt_names[k]));
482 int *enum_option_val;
483 int num_enum_opt_values;
484 std::vector<int> enum_opt_values;
485 std::vector<std::string> enum_opt_names;
489 typedef std::vector<enum_opt_data_t> enum_opt_data_list_t;
494 bool throwExceptions_;
495 bool recogniseAllOptions_;
496 bool addOutputSetupOptions_;
497 std::string doc_string_;
502#pragma warning(disable:4251)
504 mutable options_list_t options_list_;
505 options_documentation_list_t options_documentation_list_;
506 enum_opt_data_list_t enum_opt_data_list_;
511 bool output_all_front_matter_;
512 bool output_show_line_prefix_;
513 bool output_show_tab_count_;
514 bool output_show_proc_rank_;
515 int output_to_root_rank_only_;
516 bool print_rcpnode_statistics_on_exit_;
517 bool show_timer_summary_on_exit_;
519 bool printed_timer_summary_;
521 bool added_extra_output_setup_options_;
522 bool in_add_extra_output_setup_options_;
524 static const bool output_all_front_matter_default_;
525 static const bool output_show_line_prefix_default_;
526 static const bool output_show_tab_count_default_;
527 static const bool output_show_proc_rank_default_;
528 static const int output_to_root_rank_only_default_;
529 static const bool print_rcpnode_statistics_on_exit_default_;
530 static const bool show_timer_summary_on_exit_default_;
536 void add_extra_output_setup_options()
const;
540 const char enum_option_name[],
541 int* enum_option_val,
542 const int num_enum_opt_values,
543 const int enum_opt_values[],
544 const char *
const enum_opt_names[],
545 const char documentation[],
553 ,
const std::string &enum_opt_name
555 ,
const std::string &enum_str_val
556 ,std::ostream *errout
560 void print_enum_opt_names(
566 std::string enum_opt_default_val_name(
567 const std::string &enum_name
569 ,std::ostream *errout
573 int find_enum_opt_index(
574 const std::string &enum_opt_name
576 ,
const enum_opt_data_t &enum_data
577 ,std::ostream *errout
584 ,std::string *opt_name
585 ,std::string *opt_val_str
589 std::string opt_type_str( EOptType )
const;
595 ,std::ostream *errout
639 virtual void summarize(std::ostream &out=std::cout) = 0;