3 #ifndef VISR_APPUTILITIES_OPTIONS_HPP_INCLUDED 4 #define VISR_APPUTILITIES_OPTIONS_HPP_INCLUDED 8 #include <boost/program_options.hpp> 15 namespace apputilities
18 class VISR_APPUTILITIES_LIBRARY_SYMBOL
Options 33 ParseResult parse(
int argc,
char const *
const * argv, std::ostream & errMsg );
35 bool hasOption(
char const * optionName )
const;
37 template<
typename DataType >
38 DataType getOption(
char const * optionName )
const;
40 template<
typename DataType >
41 DataType getDefaultedOption(
char const * optionName, DataType
const & defaultValue )
const;
47 void printDescription( std::ostream & out );
50 template<
typename DataType >
51 void registerOption(
char const * optionName,
char const * description );
53 template<
typename DataType >
54 void registerPositionalOption(
char const * optionName,
int position,
char const * description );
62 template<
typename DataType >
65 return hasOption( optionName ) ? getOption<DataType>( optionName ) : defaultValue;
68 template<
typename DataType >
71 if( mVariablesMap.count( optionName ) != 1 )
73 throw std::logic_error( std::string(
"The mandatory command line option \"" )
74 + optionName +
"\" must be specified exactly once." );
78 auto const val = mVariablesMap[optionName];
79 DataType
const d = val.as<DataType>( );
82 catch( std::exception
const & ex )
84 throw std::logic_error( std::string(
"The value \"" )
85 +
"\" of the command line option \"" + optionName
86 +
"\" could not be converted to the target type: " + ex.what( ) );
90 template<
typename DataType >
93 mDescription.add_options()( optionName, boost::program_options::value<DataType>(), description );
97 inline void Options::registerOption<bool>(
char const * optionName,
char const * description )
99 mDescription.add_options( )(optionName, boost::program_options::bool_switch(), description);
102 template<
typename DataType >
105 registerOption< DataType >( optionName, description );
106 mPositionalDescription.add( optionName, position );
112 #endif // #ifndef VISR_APPUTILITIES_OPTIONS_HPP_INCLUDED DataType getOption(char const *optionName) const
Definition: options.hpp:69
boost::program_options::options_description mDescription
Definition: options.hpp:56
boost::program_options::positional_options_description mPositionalDescription
Definition: options.hpp:57
Definition: options.hpp:18
void registerOption(char const *optionName, char const *description)
Definition: options.hpp:91
Definition: options.cpp:10
void registerPositionalOption(char const *optionName, int position, char const *description)
Definition: options.hpp:103
DataType getDefaultedOption(char const *optionName, DataType const &defaultValue) const
Definition: options.hpp:63
ParseResult
Definition: options.hpp:25
boost::program_options::variables_map mVariablesMap
Definition: options.hpp:59