22 #ifndef _cmnCommandLineOptions_h
23 #define _cmnCommandLineOptions_h
40 template <
typename _elementType>
42 std::stringstream localStream;
46 localStream >> element;
60 inline bool cmnCommandLineOptionsConvert<std::string>(
const char * value, std::string & element) {
114 #undef OPTIONAL // work-around for Windows
121 typedef enum {REQUIRED_OPTION, OPTIONAL_OPTION, SQUASH_REQUIRED_OPTION} RequiredType;
127 #if (CISST_COMPILER == CISST_DOTNET2003)
131 OptionBase(
const std::string & shortOption,
const std::string & longOption,
132 const std::string & description,
RequiredType required);
134 virtual bool SetValue(
const char * value) = 0;
135 virtual std::string PrintValues(
void)
const = 0;
146 OptionNoValue(
const std::string & shortOption,
const std::string & longOption,
151 return std::string();
158 #if (CISST_COMPILER == CISST_DOTNET2003)
163 const std::string & description,
RequiredType required);
166 template <
typename _elementType>
172 _elementType * value):
185 std::stringstream stream;
195 #if (CISST_COMPILER == CISST_DOTNET2003)
200 const std::string & description,
RequiredType required);
203 template <
typename _elementType>
209 std::list<_elementType> * value):
218 Value->push_back(temp);
224 typedef typename std::list<_elementType> ListType;
225 typedef typename ListType::const_iterator const_iterator;
226 const const_iterator end = Value->end();
228 std::stringstream stream;
229 for (iter = Value->begin(); iter != end; ++iter) {
230 if (iter != Value->begin()) {
245 bool AddOptionNoValue(
const std::string & shortOption,
const std::string & longOption,
248 template <
typename _elementType>
250 const std::string & description,
RequiredType required, _elementType * value) {
251 std::string cleanedShort, cleanedLong;
252 if (!this->
ValidOptions(shortOption, longOption, cleanedShort, cleanedLong)) {
258 this->
Options.push_back(option);
262 template <
typename _elementType>
264 const std::string & description,
RequiredType required, std::list<_elementType> * value) {
265 std::string cleanedShort, cleanedLong;
266 if (!this->
ValidOptions(shortOption, longOption, cleanedShort, cleanedLong)) {
272 this->
Options.push_back(option);
280 bool Parse(
int argc,
const char * argv[], std::string & errorMessage);
286 bool Parse(
int argc,
char * argv[], std::string & errorMessage);
295 bool IsSet(
const std::string & option);
308 bool ValidOptions(
const std::string & shortOption,
const std::string & longOption,
309 std::string & cleanedShort, std::string & cleanedLong);
318 #endif // _cmnCommandLineOptions_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
RequiredType Required
Definition: cmnCommandLineOptions.h:139
Definition: cmnCommandLineOptions.h:124
std::string ProgramName
Definition: cmnCommandLineOptions.h:303
bool Set
Definition: cmnCommandLineOptions.h:140
friend class cmnCommandLineOptions
Definition: cmnCommandLineOptions.h:125
OptionBase * Get(const std::string &option)
std::string PrintValues(void) const
Definition: cmnCommandLineOptions.h:223
Definition: cmnCommandLineOptions.h:143
Portability across compilers and operating systems tools.
Definition: cmnCommandLineOptions.h:204
bool IsSet(const std::string &option)
virtual ~OptionOneValueBase()
Definition: cmnCommandLineOptions.h:164
bool AddOptionMultipleValues(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, std::list< _elementType > *value)
Definition: cmnCommandLineOptions.h:263
std::string PrintValues(void) const
Definition: cmnCommandLineOptions.h:150
Base class for high level objects.
Definition: cmnGenericObject.h:51
std::list< OptionBase * > OptionsType
Definition: cmnCommandLineOptions.h:304
virtual bool SetValue(const char *value)=0
bool cmnCommandLineOptionsConvert(const char *value, _elementType &element)
Definition: cmnCommandLineOptions.h:41
std::string Short
Definition: cmnCommandLineOptions.h:136
bool Parse(int argc, const char *argv[], std::string &errorMessage)
bool AddOptionOneValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, _elementType *value)
Definition: cmnCommandLineOptions.h:249
std::string Long
Definition: cmnCommandLineOptions.h:137
std::string Description
Definition: cmnCommandLineOptions.h:138
OptionOneValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, _elementType *value)
Definition: cmnCommandLineOptions.h:170
OptionMultipleValues(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required, std::list< _elementType > *value)
Definition: cmnCommandLineOptions.h:207
OptionsType Options
Definition: cmnCommandLineOptions.h:305
void PrintUsage(std::ostream &outputStream)
bool SetValue(const char *value)
Definition: cmnCommandLineOptions.h:214
virtual ~OptionBase()
Definition: cmnCommandLineOptions.h:133
Macros to export the symbols of cisstCommon (in a Dll).
Defines cmnGenericObject.
Break strings into tokens.
virtual ~OptionNoValue()
Definition: cmnCommandLineOptions.h:148
Definition: cmnCommandLineOptions.h:155
Definition: cmnCommandLineOptions.h:167
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
_elementType * Value
Definition: cmnCommandLineOptions.h:189
RequiredType
Definition: cmnCommandLineOptions.h:121
std::string PrintValues(void) const
Definition: cmnCommandLineOptions.h:184
OptionBase * GetLongNoDashDash(const std::string &longOption)
Definition: cmnCommandLineOptions.h:121
bool ValidOptions(const std::string &shortOption, const std::string &longOption, std::string &cleanedShort, std::string &cleanedLong)
Set command line options and parse command line arguments.
Definition: cmnCommandLineOptions.h:116
Definition: cmnCommandLineOptions.h:192
bool AddOptionNoValue(const std::string &shortOption, const std::string &longOption, const std::string &description, RequiredType required=OPTIONAL_OPTION)
void PrintParsedArguments(std::string &parsedArguments) const
virtual ~OptionMultipleValuesBase()
Definition: cmnCommandLineOptions.h:201
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition: cmnClassRegisterMacros.h:202
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
std::list< _elementType > * Value
Definition: cmnCommandLineOptions.h:237
bool SetValue(const char *value)
Definition: cmnCommandLineOptions.h:177
OptionBase * GetShortNoDash(const std::string &shortOption)