X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=include%2Fparameter.h;h=87c1590ccc85fbcdbe9d6f69ce01f0d5fd2253a6;hb=723cec55870209fc6fba43c1d7b49ada83c07faa;hp=a54a967e36e87bd0c9394d31b5a4b24dde22c541;hpb=0d52a8d02278592356f94ac17b1ccc5fcea388a5;p=command.git diff --git a/include/parameter.h b/include/parameter.h index a54a967..87c1590 100644 --- a/include/parameter.h +++ b/include/parameter.h @@ -2,6 +2,7 @@ #define __COMMAND_PARAMETER_H #include +#include #include "descriptive.h" #include "callable.h" @@ -32,26 +33,48 @@ namespace command { virtual ~Parameter() { } /** - * Method used for handling method calls linked with Argument or Option + * Method used for handling method calls linked with this Parameter */ virtual void handle() = 0; /** * Method used for checking if the given user value understandable for * parameter. + * + * @return true if passed value is understandable by current Parameter. + * False otherwise. */ virtual bool understand(const std::string & ) = 0; /** * Indicates if current Parameter is required + * + * @return false, as all Parameters are non-required by default. If you + * want to make Parameter as required, wrap it using Required class */ virtual bool isRequired() { return false; }; + /** + * Indicates if current Parameter has been already used + * + * @return true if current Parameter has been already used. False otherwise. + */ virtual bool isUsed() { return used; } + + /** + */ + virtual bool hungryForValue() { + return false; + } + + /** + * @return position where value starts in passed string + */ + virtual unsigned int valuePosition(const std::string & ) = 0; }; }