100 ,PARSE_HELP_PRINTED = 1
101 ,PARSE_UNRECOGNIZED_OPTION = 2
126 bool throwExceptions =
true
127 ,
bool recogniseAllOptions =
true
128 ,
bool addOutputSetupOptions =
false
141 void throwExceptions(
const bool & throwExceptions );
144 bool throwExceptions()
const;
147 void recogniseAllOptions(
const bool & recogniseAllOptions );
150 bool recogniseAllOptions()
const;
153 void addOutputSetupOptions(
const bool &addOutputSetupOptions );
156 bool addOutputSetupOptions()
const;
183 ,
const char documentation[] =
NULL
199 ,
const char documentation[] =
NULL
200 ,
const bool required =
false
216 ,
const char documentation[] =
NULL
217 ,
const bool required =
false
233 ,
const char documentation[] =
NULL
234 ,
const bool required =
false
250 ,
const char documentation[] =
NULL
251 ,
const bool required =
false
267 ,
const char documentation[] =
NULL
268 ,
const bool required =
false
284 ,
const char documentation[] =
NULL
285 ,
const bool required =
false
301 ,
const char documentation[] =
NULL
302 ,
const bool required =
false
333 template <
class EType>
336 ,
EType *enum_option_val
337 ,
const int num_enum_opt_values
338 ,
const EType enum_opt_values[]
339 ,
const char* enum_opt_names[]
340 ,
const char documentation[] =
NULL
341 ,
const bool required =
false
408 EParseCommandLineReturn parse(
411 ,std::ostream *
errout = &std::cerr
427 void printHelpMessage(
const char program_name[], std::ostream &out )
const;
440 enum EOptType { OPT_NONE, OPT_BOOL_TRUE, OPT_BOOL_FALSE, OPT_INT, OPT_LONG_INT, OPT_SIZE_T,
442 OPT_DOUBLE, OPT_FLOAT, OPT_STRING, OPT_ENUM_INT };
459 struct opt_val_val_t {
465 opt_val_val_t( EOptType opt_type_in,
const any& opt_val_in,
bool required_in )
466 :opt_type(opt_type_in),opt_val(opt_val_in),required(required_in),was_read(false)
482 opt_doc_t(EOptType opt_type_in,
const std::string& opt_name_in,
const std::string& opt_name_false_in
483 ,
const std::string &documentation_in,
const any &default_val_in )
484 :opt_type(opt_type_in),opt_name(opt_name_in),opt_name_false(opt_name_false_in)
485 ,documentation(documentation_in),default_val(default_val_in)
488 std::string opt_name;
489 std::string opt_name_false;
490 std::string documentation;
495 typedef std::vector<opt_doc_t> options_documentation_list_t;
498 struct enum_opt_data_t {
500 :enum_option_val(NULL), num_enum_opt_values(0)
503 int *_enum_option_val
504 ,
const int _num_enum_opt_values
505 ,
const int _enum_opt_values[]
506 ,
const char* _enum_opt_names[]
508 :enum_option_val(_enum_option_val)
509 ,num_enum_opt_values(_num_enum_opt_values)
510 ,enum_opt_values(_enum_opt_values,_enum_opt_values+_num_enum_opt_values)
512 for(
int k = 0; k < num_enum_opt_values; ++k )
513 enum_opt_names.push_back(std::string(_enum_opt_names[k]));
515 int *enum_option_val;
516 int num_enum_opt_values;
517 std::vector<int> enum_opt_values;
518 std::vector<std::string> enum_opt_names;
522 typedef std::vector<enum_opt_data_t> enum_opt_data_list_t;
527 bool throwExceptions_;
528 bool recogniseAllOptions_;
529 bool addOutputSetupOptions_;
530 std::string doc_string_;
535#pragma warning(disable:4251)
537 mutable options_list_t options_list_;
538 options_documentation_list_t options_documentation_list_;
539 enum_opt_data_list_t enum_opt_data_list_;
544 bool output_all_front_matter_;
545 bool output_show_line_prefix_;
546 bool output_show_tab_count_;
547 bool output_show_proc_rank_;
548 int output_to_root_rank_only_;
549 bool print_rcpnode_statistics_on_exit_;
550 bool show_timer_summary_on_exit_;
552 bool printed_timer_summary_;
554 bool added_extra_output_setup_options_;
555 bool in_add_extra_output_setup_options_;
557 static const bool output_all_front_matter_default_;
558 static const bool output_show_line_prefix_default_;
559 static const bool output_show_tab_count_default_;
560 static const bool output_show_proc_rank_default_;
561 static const int output_to_root_rank_only_default_;
562 static const bool print_rcpnode_statistics_on_exit_default_;
563 static const bool show_timer_summary_on_exit_default_;
569 void add_extra_output_setup_options()
const;
573 const char enum_option_name[]
574 ,
int *enum_option_val
575 ,
const int num_enum_opt_values
576 ,
const int enum_opt_values[]
577 ,
const char* enum_opt_names[]
578 ,
const char documentation[]
586 ,
const std::string &enum_opt_name
588 ,
const std::string &enum_str_val
589 ,std::ostream *errout
593 void print_enum_opt_names(
599 std::string enum_opt_default_val_name(
600 const std::string &enum_name
602 ,std::ostream *errout
606 int find_enum_opt_index(
607 const std::string &enum_opt_name
609 ,
const enum_opt_data_t &enum_data
610 ,std::ostream *errout
617 ,std::string *opt_name
618 ,std::string *opt_val_str
622 std::string opt_type_str( EOptType )
const;
628 ,std::ostream *errout
672 virtual void summarize(std::ostream &out=std::cout) = 0;