1 #ifndef OSMSCOUT_UTIL_CMDLINEPARSING_H 2 #define OSMSCOUT_UTIL_CMDLINEPARSING_H 40 std::vector<std::string> arguments;
46 explicit CmdLineScanner(
const std::vector<std::string>& arguments);
48 bool HasNextArg()
const;
49 std::string PeakNextArg()
const;
50 std::string Advance();
51 std::string GetCurrentArg()
const;
59 std::string errorDescription;
67 bool HasError()
const;
69 std::string GetErrorDescription()
const;
75 std::string optionName;
76 std::string argumentName;
79 std::string GetOptionName()
const;
80 std::string GetArgumentName()
const;
85 void SetOptionName(
const std::string& optionName);
86 void SetArgumentName(
const std::string& argumentName);
88 virtual std::string GetOptionHint()
const = 0;
89 virtual std::string GetPositionalHint(
const std::string& positional)
const = 0;
106 std::string GetOptionHint()
const override;
107 std::string GetPositionalHint(
const std::string& positional)
const override;
119 std::string lastArgumentCalled;
124 std::string GetOptionHint()
const override;
125 std::string GetPositionalHint(
const std::string& positional)
const override;
141 std::string GetOptionHint()
const override;
142 std::string GetPositionalHint(
const std::string& positional)
const override;
158 std::string GetOptionHint()
const override;
159 std::string GetPositionalHint(
const std::string& positional)
const override;
175 std::string GetOptionHint()
const override;
176 std::string GetPositionalHint(
const std::string& positional)
const override;
213 std::string valueString=scanner.
Advance();
236 std::string GetOptionHint()
const override;
237 std::string GetPositionalHint(
const std::string& positional)
const override;
242 template<
class ...Args>
245 return std::make_shared<CmdLineFlagArgParser>(std::forward<Args>(args)...);
248 template<
class ...Args>
251 return std::make_shared<CmdLineAlternativeFlagArgParser>(std::forward<Args>(args)...);
254 template<
class ...Args>
257 return std::make_shared<CmdLineBoolArgParser>(std::forward<Args>(args)...);
260 template<
class ...Args>
263 return std::make_shared<CmdLineStringArgParser>(std::forward<Args>(args)...);
266 template<
class ...Args>
269 return std::make_shared<CmdLineStringListArgParser>(std::forward<Args>(args)...);
272 template<
class T,
class ...Args>
275 return std::make_shared<CmdLineNumberArgParser<T>>(std::forward<Args>(args)...);
278 template<
class ...Args>
281 return std::make_shared<CmdLineNumberArgParser<int>>(std::forward<Args>(args)...);
284 template<
class ...Args>
287 return std::make_shared<CmdLineNumberArgParser<unsigned int>>(std::forward<Args>(args)...);
290 template<
class ...Args>
293 return std::make_shared<CmdLineNumberArgParser<long>>(std::forward<Args>(args)...);
296 template<
class ...Args>
299 return std::make_shared<CmdLineNumberArgParser<unsigned long>>(std::forward<Args>(args)...);
302 template<
class ...Args>
305 return std::make_shared<CmdLineNumberArgParser<size_t>>(std::forward<Args>(args)...);
308 template<
class ...Args>
311 return std::make_shared<CmdLineNumberArgParser<double>>(std::forward<Args>(args)...);
314 template<
class ...Args>
317 return std::make_shared<CmdLineGeoCoordArgParser>(std::forward<Args>(args)...);
327 std::string argument;
331 const std::string& option,
332 const std::string& argument,
337 stopParsing(stopParsing)
343 struct CmdLinePositional
346 std::string positional;
349 const std::string& positional)
351 positional(positional)
357 struct CmdLineArgHelp
359 std::vector<std::string> argTemplates;
360 std::string helpString;
362 CmdLineArgHelp(
const std::string& argTemplate,
363 const std::string& helpString)
364 : helpString(helpString)
366 argTemplates.push_back(argTemplate);
369 CmdLineArgHelp(
const std::vector<std::string>& argTemplates,
370 const std::string& helpString)
371 : argTemplates(argTemplates),
372 helpString(helpString)
382 std::map<std::string,CmdLineOption> options;
383 std::list<CmdLinePositional> positionals;
384 std::list<CmdLineArgHelp> optionHelps;
385 std::list<CmdLineArgHelp> positionalHelps;
389 int argc,
char* argv[]);
391 const std::vector<std::string>& arguments);
394 const std::string& optionName,
395 const std::string& helpString,
396 bool stopParsing=
false);
399 const std::vector<std::string>& optionNames,
400 const std::string& helpString,
401 bool stopParsing=
false);
404 const std::string& helpString,
405 const std::string& argumentName);
409 std::string GetHelp(
size_t indent=2)
const;
CmdLineArgParserRef CmdLineAlternativeFlag(Args &&...args)
Definition: CmdLineParsing.h:249
CmdLineArgParserRef CmdLineBoolOption(Args &&...args)
Definition: CmdLineParsing.h:255
CmdLineArgParserRef CmdLineNumberOption(Args &&...args)
Definition: CmdLineParsing.h:273
bool StringToNumber(const std::string &string, N &number, size_t base=10)
Definition: String.h:282
Definition: CmdLineParsing.h:95
CmdLineArgParserRef CmdLineFlag(Args &&...args)
Definition: CmdLineParsing.h:243
Definition: CmdLineParsing.h:55
Definition: CmdLineParsing.h:182
CmdLineArgParserRef CmdLineStringOption(Args &&...args)
Definition: CmdLineParsing.h:261
std::string GetArgumentName() const
Definition: CmdLineParsing.h:112
std::function< void(const std::string &)> AppendFunction
Definition: CmdLineParsing.h:167
std::shared_ptr< CmdLineArgParser > CmdLineArgParserRef
Definition: CmdLineParsing.h:93
CmdLineArgParserRef CmdLineLongOption(Args &&...args)
Definition: CmdLineParsing.h:291
std::string GetPositionalHint(const std::string &positional) const override
Definition: CmdLineParsing.h:202
std::string GetOptionHint() const override
Definition: CmdLineParsing.h:197
Definition: CmdLineParsing.h:130
OSMSCOUT_API bool ParseBoolArgument(int argc, char *argv[], int ¤tIndex, bool &value)
Definition: CmdLineParsing.h:164
CmdLineArgParserRef CmdLineUIntOption(Args &&...args)
Definition: CmdLineParsing.h:285
#define OSMSCOUT_API
Definition: CoreImportExport.h:45
CmdLineArgParserRef CmdLineULongOption(Args &&...args)
Definition: CmdLineParsing.h:297
std::function< void(const GeoCoord &)> SetterFunction
Definition: CmdLineParsing.h:228
Definition: CmdLineParsing.h:72
std::function< void(const bool &)> SetterFunction
Definition: CmdLineParsing.h:133
std::function< void(const std::string &)> SetterFunction
Definition: CmdLineParsing.h:150
Definition: CmdLineParsing.h:37
CmdLineArgParserRef CmdLineSizeTOption(Args &&...args)
Definition: CmdLineParsing.h:303
Definition: CmdLineParsing.h:225
std::function< void(const bool &)> SetterFunction
Definition: CmdLineParsing.h:98
std::function< void(const std::string &)> SetterFunction
Definition: CmdLineParsing.h:115
Definition: CmdLineParsing.h:147
CmdLineArgParserRef CmdLineGeoCoordOption(Args &&...args)
Definition: CmdLineParsing.h:315
CmdLineArgParserRef CmdLineDoubleOption(Args &&...args)
Definition: CmdLineParsing.h:309
OSMSCOUT_API bool ParseStringArgument(int argc, char *argv[], int ¤tIndex, std::string &value)
OSMSCOUT_API bool ParseUInt32Argument(int argc, char *argv[], int ¤tIndex, uint32_t &value)
OSMSCOUT_API bool ParseSizeTArgument(int argc, char *argv[], int ¤tIndex, size_t &value)
CmdLineArgParserRef CmdLineIntOption(Args &&...args)
Definition: CmdLineParsing.h:279
CmdLineParseResult Parse(CmdLineScanner &scanner) override
Definition: CmdLineParsing.h:207
CmdLineArgParserRef CmdLineStringListOption(Args &&...args)
Definition: CmdLineParsing.h:267
Definition: CmdLineParsing.h:320
CmdLineNumberArgParser(SetterFunction &&setter)
Definition: CmdLineParsing.h:191
std::function< void(const N &)> SetterFunction
Definition: CmdLineParsing.h:185