21#ifndef _cmnCommandLineOptions_h
22#define _cmnCommandLineOptions_h
39template <
typename _elementType>
41 std::stringstream localStream;
45 localStream >> element;
126#if (CISST_COMPILER == CISST_DOTNET2003)
130 OptionBase(
const std::string & shortOption,
const std::string & longOption,
131 const std::string & description,
RequiredType required);
145 OptionNoValue(
const std::string & shortOption,
const std::string & longOption,
150 return std::string();
157#if (CISST_COMPILER == CISST_DOTNET2003)
162 const std::string & description,
RequiredType required);
165 template <
typename _elementType>
171 _elementType * value):
184 std::stringstream stream;
194#if (CISST_COMPILER == CISST_DOTNET2003)
199 const std::string & description,
RequiredType required);
202 template <
typename _elementType>
208 std::list<_elementType> * value):
217 Value->push_back(temp);
223 typedef typename std::list<_elementType> ListType;
227 std::stringstream stream;
228 for (iter =
Value->begin(); iter !=
end; ++iter) {
229 if (iter !=
Value->begin()) {
247 template <
typename _elementType>
249 const std::string & description,
RequiredType required, _elementType * value) {
250 std::string cleanedShort, cleanedLong;
251 if (!this->
ValidOptions(shortOption, longOption, cleanedShort, cleanedLong)) {
257 this->
Options.push_back(option);
261 template <
typename _elementType>
263 const std::string & description,
RequiredType required, std::list<_elementType> * value) {
264 std::string cleanedShort, cleanedLong;
265 if (!this->
ValidOptions(shortOption, longOption, cleanedShort, cleanedLong)) {
271 this->
Options.push_back(option);
279 bool Parse(
int argc,
const char * argv[], std::string & errorMessage);
285 bool Parse(
int argc,
char * argv[], std::string & errorMessage);
286 bool Parse(
const std::vector<std::string> & arguments, std::string & errorMessage);
290 bool Parse(
int argc,
char * argv[], std::ostream & outputStream);
291 bool Parse(
const std::vector<std::string> & arguments, std::ostream & outputStream);
300 bool IsSet(
const std::string & option);
313 bool ValidOptions(
const std::string & shortOption,
const std::string & longOption,
314 std::string & cleanedShort, std::string & cleanedLong);
Definition cmnCommandLineOptions.h:123
RequiredType Required
Definition cmnCommandLineOptions.h:138
std::string Description
Definition cmnCommandLineOptions.h:137
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:124
bool Set
Definition cmnCommandLineOptions.h:139
std::string Long
Definition cmnCommandLineOptions.h:136
virtual bool SetValue(const char *value)=0
virtual ~OptionBase()
Definition cmnCommandLineOptions.h:132
std::string Short
Definition cmnCommandLineOptions.h:135
OptionBase(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required)
virtual std::string PrintValues(void) const =0
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:192
OptionMultipleValuesBase(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required)
virtual ~OptionMultipleValuesBase()
Definition cmnCommandLineOptions.h:200
Definition cmnCommandLineOptions.h:203
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:204
std::string PrintValues(void) const
Definition cmnCommandLineOptions.h:222
OptionMultipleValues(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, std::list< _elementType > *value)
Definition cmnCommandLineOptions.h:206
std::list< _elementType > * Value
Definition cmnCommandLineOptions.h:236
bool SetValue(const char *value)
Definition cmnCommandLineOptions.h:213
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:143
std::string PrintValues(void) const
Definition cmnCommandLineOptions.h:149
virtual ~OptionNoValue()
Definition cmnCommandLineOptions.h:147
OptionNoValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required=OPTIONAL_OPTION)
bool SetValue(const char *value)
virtual ~OptionOneValueBase()
Definition cmnCommandLineOptions.h:163
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:155
OptionOneValueBase(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required)
Definition cmnCommandLineOptions.h:166
friend class cmnCommandLineOptions
Definition cmnCommandLineOptions.h:167
OptionOneValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, _elementType *value)
Definition cmnCommandLineOptions.h:169
bool SetValue(const char *value)
Definition cmnCommandLineOptions.h:176
std::string PrintValues(void) const
Definition cmnCommandLineOptions.h:183
_elementType * Value
Definition cmnCommandLineOptions.h:188
Set command line options and parse command line arguments.
Definition cmnCommandLineOptions.h:116
void PrintParsedArguments(std::string &parsedArguments) const
void PrintUsage(std::ostream &outputStream)
bool Parse(int argc, char *argv[], std::ostream &outputStream)
cmnCommandLineOptions(void)
OptionBase * GetLongNoDashDash(const std::string &longOption)
std::string ProgramName
Definition cmnCommandLineOptions.h:308
std::list< OptionBase * > OptionsType
Definition cmnCommandLineOptions.h:309
bool Parse(const std::vector< std::string > &arguments, std::ostream &outputStream)
OptionBase * Get(const std::string &option)
bool AddOptionNoValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required=OPTIONAL_OPTION)
bool Parse(int argc, const char *argv[], std::string &errorMessage)
bool Parse(const std::vector< std::string > &arguments, std::string &errorMessage)
bool Parse(int argc, char *argv[], std::string &errorMessage)
OptionsType Options
Definition cmnCommandLineOptions.h:310
bool IsSet(const std::string &option)
RequiredType
Definition cmnCommandLineOptions.h:120
@ REQUIRED_OPTION
Definition cmnCommandLineOptions.h:120
@ SQUASH_REQUIRED_OPTION
Definition cmnCommandLineOptions.h:120
@ OPTIONAL_OPTION
Definition cmnCommandLineOptions.h:120
bool ValidOptions(const std::string &shortOption, const std::string &longOption, std::string &cleanedShort, std::string &cleanedLong)
OptionBase * GetShortNoDash(const std::string &shortOption)
bool AddOptionMultipleValues(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, std::list< _elementType > *value)
Definition cmnCommandLineOptions.h:262
bool AddOptionOneValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, _elementType *value)
Definition cmnCommandLineOptions.h:248
Base class for high level objects.
Definition cmnGenericObject.h:53
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
const int CMN_NO_DYNAMIC_CREATION
Definition cmnClassRegisterMacros.h:325
bool cmnCommandLineOptionsConvert(const char *value, _elementType &element)
Definition cmnCommandLineOptions.h:40
bool cmnCommandLineOptionsConvert< std::string >(const char *value, std::string &element)
Definition cmnCommandLineOptions.h:59
Macros to export the symbols of cisstCommon (in a Dll).
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Defines cmnGenericObject.
#define CMN_LOG_ALLOW_DEFAULT
Definition cmnLogLoD.h:76
Portability across compilers and operating systems tools.
Break strings into tokens.
const_iterator end(void) const
Definition vctDynamicConstMatrixBase.h:209
OwnerType::const_iterator const_iterator
Definition vctDynamicConstMatrixBase.h:95