1#ifndef OSMSCOUT_UTIL_CMDLINEPARSING_H
2#define OSMSCOUT_UTIL_CMDLINEPARSING_H
41 std::vector<std::string> arguments;
60 std::string errorDescription;
76 std::string optionName;
77 std::string argumentName;
120 std::string lastArgumentCalled;
214 std::string valueString=scanner.
Advance();
243 template<
class ...Args>
246 return std::make_shared<CmdLineFlagArgParser>(std::forward<Args>(args)...);
249 template<
class ...Args>
252 return std::make_shared<CmdLineAlternativeFlagArgParser>(std::forward<Args>(args)...);
255 template<
class ...Args>
258 return std::make_shared<CmdLineBoolArgParser>(std::forward<Args>(args)...);
261 template<
class ...Args>
264 return std::make_shared<CmdLineStringArgParser>(std::forward<Args>(args)...);
267 template<
class ...Args>
270 return std::make_shared<CmdLineStringListArgParser>(std::forward<Args>(args)...);
273 template<
class T,
class ...Args>
276 return std::make_shared<CmdLineNumberArgParser<T>>(std::forward<Args>(args)...);
279 template<
class ...Args>
282 return std::make_shared<CmdLineNumberArgParser<int>>(std::forward<Args>(args)...);
285 template<
class ...Args>
288 return std::make_shared<CmdLineNumberArgParser<unsigned int>>(std::forward<Args>(args)...);
291 template<
class ...Args>
294 return std::make_shared<CmdLineNumberArgParser<long>>(std::forward<Args>(args)...);
297 template<
class ...Args>
300 return std::make_shared<CmdLineNumberArgParser<unsigned long>>(std::forward<Args>(args)...);
303 template<
class ...Args>
306 return std::make_shared<CmdLineNumberArgParser<size_t>>(std::forward<Args>(args)...);
309 template<
class ...Args>
312 return std::make_shared<CmdLineNumberArgParser<double>>(std::forward<Args>(args)...);
315 template<
class ...Args>
318 return std::make_shared<CmdLineGeoCoordArgParser>(std::forward<Args>(args)...);
328 std::string argument;
332 const std::string& option,
333 const std::string& argument,
338 stopParsing(stopParsing)
344 struct CmdLinePositional
347 std::string positional;
350 const std::string& positional)
352 positional(positional)
358 struct CmdLineArgHelp
360 std::vector<std::string> argTemplates;
361 std::string helpString;
363 CmdLineArgHelp(
const std::string& argTemplate,
364 const std::string& helpString)
365 : helpString(helpString)
367 argTemplates.push_back(argTemplate);
370 CmdLineArgHelp(
const std::vector<std::string>& argTemplates,
371 const std::string& helpString)
372 : argTemplates(argTemplates),
373 helpString(helpString)
383 std::map<std::string,CmdLineOption,std::less<>> options;
384 std::list<CmdLinePositional> positionals;
385 std::list<CmdLineArgHelp> optionHelps;
386 std::list<CmdLineArgHelp> positionalHelps;
390 int argc,
char* argv[]);
392 const std::vector<std::string>& arguments);
395 const std::string& optionName,
396 const std::string& helpString,
397 bool stopParsing=
false);
400 const std::vector<std::string>& optionNames,
401 const std::string& helpString,
402 bool stopParsing=
false);
405 const std::string& argumentName,
406 const std::string& helpString);
#define OSMSCOUT_API
Definition CoreImportExport.h:45
std::string GetOptionHint() const override
CmdLineParseResult Parse(CmdLineScanner &scanner) override
CmdLineAlternativeFlagArgParser(SetterFunction &&setter)
std::string GetPositionalHint(const std::string &positional) const override
std::function< void(const std::string &)> SetterFunction
Definition CmdLineParsing.h:116
Definition CmdLineParsing.h:74
virtual ~CmdLineArgParser()=default
void SetArgumentName(const std::string &argumentName)
virtual std::string GetOptionHint() const =0
std::string GetOptionName() const
std::string GetArgumentName() const
virtual CmdLineParseResult Parse(CmdLineScanner &scanner)=0
void SetOptionName(const std::string &optionName)
virtual std::string GetPositionalHint(const std::string &positional) const =0
std::string GetPositionalHint(const std::string &positional) const override
std::string GetOptionHint() const override
std::function< void(const bool &)> SetterFunction
Definition CmdLineParsing.h:134
CmdLineBoolArgParser(SetterFunction &&setter)
CmdLineParseResult Parse(CmdLineScanner &scanner) override
CmdLineParseResult Parse(CmdLineScanner &scanner) override
CmdLineFlagArgParser(SetterFunction &&setter)
std::string GetOptionHint() const override
std::string GetPositionalHint(const std::string &positional) const override
std::function< void(const bool &)> SetterFunction
Definition CmdLineParsing.h:99
std::string GetOptionHint() const override
CmdLineParseResult Parse(CmdLineScanner &scanner) override
std::string GetPositionalHint(const std::string &positional) const override
CmdLineGeoCoordArgParser(SetterFunction &&setter)
std::function< void(const GeoCoord &)> SetterFunction
Definition CmdLineParsing.h:229
std::function< void(const N &)> SetterFunction
Definition CmdLineParsing.h:186
std::string GetPositionalHint(const std::string &positional) const override
Definition CmdLineParsing.h:203
std::string GetOptionHint() const override
Definition CmdLineParsing.h:198
CmdLineParseResult Parse(CmdLineScanner &scanner) override
Definition CmdLineParsing.h:208
CmdLineNumberArgParser(SetterFunction &&setter)
Definition CmdLineParsing.h:192
Definition CmdLineParsing.h:57
CmdLineParseResult(const std::string &errorDescription)
std::string GetErrorDescription() const
void AddOption(const CmdLineArgParserRef &parser, const std::vector< std::string > &optionNames, const std::string &helpString, bool stopParsing=false)
std::string GetHelp(size_t indent=2) const
void AddOption(const CmdLineArgParserRef &parser, const std::string &optionName, const std::string &helpString, bool stopParsing=false)
CmdLineParseResult Parse()
CmdLineParser(const std::string &appName, const std::vector< std::string > &arguments)
void AddPositional(const CmdLineArgParserRef &parser, const std::string &argumentName, const std::string &helpString)
CmdLineParser(const std::string &appName, int argc, char *argv[])
Definition CmdLineParsing.h:39
CmdLineScanner(const std::vector< std::string > &arguments)
std::string GetCurrentArg() const
std::string PeakNextArg() const
CmdLineScanner(int argc, char *argv[])
std::string GetOptionHint() const override
CmdLineStringArgParser(SetterFunction &&setter)
CmdLineParseResult Parse(CmdLineScanner &scanner) override
std::function< void(const std::string &)> SetterFunction
Definition CmdLineParsing.h:151
std::string GetPositionalHint(const std::string &positional) const override
std::string GetPositionalHint(const std::string &positional) const override
std::string GetOptionHint() const override
CmdLineParseResult Parse(CmdLineScanner &scanner) override
CmdLineStringListArgParser(AppendFunction &&appender)
std::function< void(const std::string &)> AppendFunction
Definition CmdLineParsing.h:168
bool StringToNumber(const std::string &string, N &number, size_t base=10)
Definition String.h:295
std::shared_ptr< CmdLineArgParser > CmdLineArgParserRef
Definition CmdLineParsing.h:94
CmdLineArgParserRef CmdLineBoolOption(Args &&...args)
Definition CmdLineParsing.h:256
CmdLineArgParserRef CmdLineFlag(Args &&...args)
Definition CmdLineParsing.h:244
CmdLineArgParserRef CmdLineSizeTOption(Args &&...args)
Definition CmdLineParsing.h:304
CmdLineArgParserRef CmdLineStringOption(Args &&...args)
Definition CmdLineParsing.h:262
CmdLineArgParserRef CmdLineDoubleOption(Args &&...args)
Definition CmdLineParsing.h:310
CmdLineArgParserRef CmdLineAlternativeFlag(Args &&...args)
Definition CmdLineParsing.h:250
OSMSCOUT_API bool ParseStringArgument(int argc, char *argv[], int ¤tIndex, std::string &value)
CmdLineArgParserRef CmdLineStringListOption(Args &&...args)
Definition CmdLineParsing.h:268
CmdLineArgParserRef CmdLineUIntOption(Args &&...args)
Definition CmdLineParsing.h:286
OSMSCOUT_API bool ParseSizeTArgument(int argc, char *argv[], int ¤tIndex, size_t &value)
CmdLineArgParserRef CmdLineNumberOption(Args &&...args)
Definition CmdLineParsing.h:274
CmdLineArgParserRef CmdLineLongOption(Args &&...args)
Definition CmdLineParsing.h:292
CmdLineArgParserRef CmdLineIntOption(Args &&...args)
Definition CmdLineParsing.h:280
OSMSCOUT_API bool ParseUInt32Argument(int argc, char *argv[], int ¤tIndex, uint32_t &value)
OSMSCOUT_API bool ParseBoolArgument(int argc, char *argv[], int ¤tIndex, bool &value)
CmdLineArgParserRef CmdLineULongOption(Args &&...args)
Definition CmdLineParsing.h:298
CmdLineArgParserRef CmdLineGeoCoordOption(Args &&...args)
Definition CmdLineParsing.h:316