10 #ifndef TEUCHOS_COMMAND_LINE_PROCESSOR_HPP
11 #define TEUCHOS_COMMAND_LINE_PROCESSOR_HPP
52 {
public:
ParseError(
const std::string& what_arg) : std::logic_error(what_arg) {}};
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;
133 void setDocString(
const char doc_string[] );
148 const char option_true[]
149 ,
const char option_false[]
151 ,
const char documentation[] = NULL
165 const char option_name[]
167 ,
const char documentation[] = NULL
168 ,
const bool required =
false
182 const char option_name[]
183 ,
long int *option_val
184 ,
const char documentation[] = NULL
185 ,
const bool required =
false
199 const char option_name[]
201 ,
const char documentation[] = NULL
202 ,
const bool required =
false
216 const char option_name[]
217 ,
long long int *option_val
218 ,
const char documentation[] = NULL
219 ,
const bool required =
false
233 const char option_name[]
235 ,
const char documentation[] = NULL
236 ,
const bool required =
false
250 const char option_name[]
252 ,
const char documentation[] = NULL
253 ,
const bool required =
false
267 const char option_name[]
268 ,std::string *option_val
269 ,
const char documentation[] = NULL
270 ,
const bool required =
false
301 template <
class EType>
303 const char enum_option_name[],
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;
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)
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]));
501 #pragma warning(push)
502 #pragma warning(disable:4251)
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
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;
690 template <
class EType>
693 const char enum_option_name[],
694 EType* enum_option_val,
695 const int num_enum_opt_values,
696 const EType enum_opt_values[],
697 const char *
const enum_opt_names[],
698 const char documentation[],
713 reinterpret_cast<int*>(enum_option_val),
715 reinterpret_cast<const int*>(enum_opt_values),
740 str =
"long long int";
764 #endif // TEUCHOS_COMMAND_LINE_PROCESSOR_HPP
bool output_show_proc_rank_
static const bool output_all_front_matter_default_
Modified boost::any class for holding a templated value.
Thrown if –help was specified and throwExceptions==true.
std::vector< enum_opt_data_t > enum_opt_data_list_t
int output_to_root_rank_only_
Teuchos::map< std::string, opt_val_val_t > options_list_t
static const bool show_timer_summary_on_exit_default_
HelpPrinted(const std::string &what_arg)
Template classes for testing assertions at compile time.
bool throwExceptions() const
Returns true if an std::exception is thrown, there is a parse error, or help is printed.
bool recogniseAllOptions_
bool in_add_extra_output_setup_options_
std::vector< opt_doc_t > options_documentation_list_t
virtual ~TimeMonitorSurrogate()
! brief.
opt_val_val_t(EOptType opt_type_in, const any &opt_val_in, bool required_in)
Modified boost::any class, which is a container for a templated value.
enum_opt_data_list_t enum_opt_data_list_
std::string documentation
void setEnumOption(const char enum_option_name[], int *enum_option_val, const int num_enum_opt_values, const int enum_opt_values[], const char *const enum_opt_names[], const char documentation[], const bool required)
Thrown if an unrecognized option was found and throwExceptions==true.
options_documentation_list_t options_documentation_list_
static const bool output_show_tab_count_default_
static const bool output_show_proc_rank_default_
static const bool output_show_line_prefix_default_
void setOption(const char option_true[], const char option_false[], bool *option_val, const char documentation[]=NULL)
Set a boolean option.
static const int output_to_root_rank_only_default_
#define TEUCHOSCORE_LIB_DLL_EXPORT
UnrecognizedOption(const std::string &what_arg)
std::string opt_type_str(EOptType) const
Interface by which CommandLineProcessor may use TimeMonitor.
bool output_show_tab_count_
bool output_all_front_matter_
opt_doc_t(EOptType opt_type_in, const std::string &opt_name_in, const std::string &opt_name_false_in, const std::string &documentation_in, const any &default_val_in)
bool addOutputSetupOptions() const
Returns true options will be automatically added to setup Teuchos::VerboseObjectBase::getDefaultOStre...
static const bool print_rcpnode_statistics_on_exit_default_
ParseError(const std::string &what_arg)
Provides std::map class for deficient platforms.
std::vector< std::string > enum_opt_names
EParseCommandLineReturn
Return value for CommandLineProcessor::parse(). Note: These enums are all given non-negative values s...
bool printed_timer_summary_
options_list_t options_list_
bool addOutputSetupOptions_
bool show_timer_summary_on_exit_
bool print_rcpnode_statistics_on_exit_
bool recogniseAllOptions() const
Returns true if all options must be recognized by the parser.
bool output_show_line_prefix_
Smart reference counting pointer class for automatic garbage collection.
If instantiated (for Test!=0) then this should not compile!
bool added_extra_output_setup_options_
Thrown if a parse std::exception occurs and throwExceptions==true.
enum_opt_data_t(int *_enum_option_val, const int _num_enum_opt_values, const int _enum_opt_values[], const char *const _enum_opt_names[])
Class that helps parse command line input arguments from (argc,argv[]) and set options.
std::vector< int > enum_opt_values
std::string opt_name_false
Simple wrapper class for raw pointers to single objects where no persisting relationship exists...