#ifndef __COMMAND_OPTION_H
#define __COMMAND_OPTION_H
+#include <string>
+
+#include "parameter.h"
+
namespace command {
/**
* Class responsible for handling commandline options.
*/
template<typename OptionType>
class Option
- : Argument<OptionType> {
+ : public Parameter, public Callable<OptionType> {
protected:
/**
* Option name
* @param description Description of current Option
* @param function Function used to handle current Option.
*/
- Argument(std::string name, std::string description, FunctionType function)
- : name(name), Argument<OptionType>(description, function) {
+ Option(std::string name, std::string description, void (*function)(OptionType))
+ : Parameter(description), Callable<OptionType>(function), name(name) {
+ }
+ virtual ~Option() { }
+
+ virtual void handle() {
+ this->call(std::string("O"));
+ }
+
+ virtual bool understand(const std::string & argVal) {
+ if (argVal.find(name) != std::string::npos) {
+ return true;
+ }
+
+ return false;
}
};
}