dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
command.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Possibility to pass class method reference
[command.git]
/
include
/
argument.h
diff --git
a/include/argument.h
b/include/argument.h
index dfaea65cea9b4ba6d5d54dd39c000ee79b8ad19e..2cd3c300f970a8d2e205de7685a6f10fd9ad241d 100644
(file)
--- a/
include/argument.h
+++ b/
include/argument.h
@@
-4,6
+4,7
@@
#include <string>
#include <sstream>
#include <iostream>
#include <string>
#include <sstream>
#include <iostream>
+#include <functional>
#include "parameter.h"
#include "callable.h"
#include "parameter.h"
#include "callable.h"
@@
-14,9
+15,9
@@
namespace command {
* Arguments are non-named parameters of program.
*
* Example:
* Arguments are non-named parameters of program.
*
* Example:
- * ./myprog ARGUMENT
- * ./myprog /path/to/file
- * ./myprog "some argument"
+ *
-
./myprog ARGUMENT
+ *
-
./myprog /path/to/file
+ *
-
./myprog "some argument"
*/
template<typename ParameterType>
class Argument : public Parameter, public Callable<ParameterType> {
*/
template<typename ParameterType>
class Argument : public Parameter, public Callable<ParameterType> {
@@
-35,16
+36,21
@@
namespace command {
: Parameter(description), Callable<ParameterType>(function) {
}
: Parameter(description), Callable<ParameterType>(function) {
}
+ Argument(const std::string & description, std::function<void(ParameterType)> function)
+ : Parameter(description), Callable<ParameterType>(function) {
+ }
+
/**
*
*/
virtual ~Argument() { }
/**
/**
*
*/
virtual ~Argument() { }
/**
- *
+ *
\inheritdoc
*/
virtual void handle() {
this->call(value);
*/
virtual void handle() {
this->call(value);
+ this->used = true;
}
/**
}
/**
@@
-64,20
+70,24
@@
namespace command {
* against next value.
*/
virtual bool understand(const std::string & argv) {
* against next value.
*/
virtual bool understand(const std::string & argv) {
- if (!isUsed()) {
- std::stringstream ss;
+ std::stringstream ss;
-
ss
<< argv;
-
ss >> value;
+
ss << std::fixed
<< argv;
+ ss >> value;
- if (!ss.fail()) {
- this->used = true;
- return true;
- }
+ if (!ss.fail()) {
+ return true;
}
return false;
}
}
return false;
}
+
+ /**
+ * \inheritdoc
+ */
+ virtual unsigned int valuePosition(const std::string & ) {
+ return 0;
+ }
};
}
};
}