1#ifndef __COMMAND_OPTION_H
2#define __COMMAND_OPTION_H
9#include "exception/missingOptionValue.h"
10#include "exception/optionFailedConversion.h"
11#include "exception/optionValueNotSpecified.h"
23 template<
typename ParameterType>
27 typedef std::string OptionName;
47 Option(
const std::string &
name,
const std::string & description, std::function<
void(ParameterType)> function)
92 if (this->hasName(argv)) {
95 if (pos !=
name.size()) {
100 ss << std::fixed << argv.substr(pos + 1);
116 std::size_t pos =
value.find(
"=");
118 if ((this->hasName(
value)) && (pos == std::string::npos)) {
119 throw OptionValueNotSpecified(
"Option: " +
name +
" requires value to be specified after equal sign, but no equal sign was found");
126 bool hasName(
const std::string & argv) {
127 return argv.find(
name) == 0;
147 typedef std::string OptionName;
161 Option(
const std::string &
name,
const std::string & description, std::function<
void(
void)> function)
199 throw new std::invalid_argument(this->
describe() +
" is void Option, so it does not have value part");
Definition: callable.h:12
void call(ParameterType value)
Definition: callable.h:37
const std::string & describe()
Definition: descriptive.h:29
Definition: missingOptionValue.h:12
Definition: optionFailedConversion.h:15
Definition: optionValueNotSpecified.h:13
virtual unsigned int valuePosition(const std::string &)
Definition: option.h:198
virtual bool understand(const std::string &argv)
Definition: option.h:188
const OptionName name
Definition: option.h:152
virtual void handle()
Definition: option.h:168
Option(const std::string &name, const std::string &description, std::function< void(void)> function)
Definition: option.h:161
virtual bool understand(const std::string &argv)
Definition: option.h:91
virtual unsigned int valuePosition(const std::string &value)
Definition: option.h:115
Option(const std::string &name, const std::string &description, std::function< void(ParameterType)> function)
Definition: option.h:47
ParameterType value
Definition: option.h:37
const OptionName name
Definition: option.h:32
virtual void handle()
Definition: option.h:59
Definition: parameter.h:17
bool used
Definition: parameter.h:20