Comments (2)
Hi @Lecrapouille - great catch!
Do you mind making a PR? Would be much appreciated! Thanks 👍
from cmdparser.
How do you want I fix it ? I do not know well this library and therefore I'm not sure to clearly understand what the code does. They are several solutions:
- Is
print_value()
is supposed toreturn stringify(value);
instead of return "" ? And what initial value shall I set to value ?
template<typename T>
class CmdFunction final : public CmdBase {
public:
explicit CmdFunction(const std::string& name, const std::string& alternative, const std::string& description, bool required, bool dominant) :
CmdBase(name, alternative, description, required, dominant, ArgumentCountChecker<T>::Variadic) {
}
virtual bool parse(std::ostream& output, std::ostream& error) {
try {
CallbackArgs args { arguments, output, error };
value = callback(args);
emptyValue_ = false; // FIX HERE ?
return true;
} catch (...) {
return false;
}
}
virtual std::string print_value() const {
return emptyValue_ ? "" : stringify(value); // FIX HERE ?
}
std::function<T(CallbackArgs&)> callback;
T value;
private: // FIX HERE ?
bool emptyValue_ = true;
};
- Remove the member variable and do not check callback() return code
callback(args);
- Use local variable, get the result of callback() then void it:
T value = callback(args);
(void) value;
return true;
from cmdparser.
Related Issues (20)
- Parsing hex and octal numbers HOT 1
- Adding Catch to the project? HOT 5
- valgrind detects leaks with still reachable memory HOT 3
- Compile fails in MSVC with /clr HOT 4
- Sign conversion compilation warnings HOT 1
- multiple arguments of the same flag HOT 1
- Licensing is too restrictive HOT 1
- Do you mind tagging a version? HOT 2
- Two range for loops using auto const HOT 1
- Allow to specify general program description HOT 3
- Tests broken: first `TEST_CASE("Parse help", "[help]")` calls `exit(0)`.
- Nice work ... HOT 1
- Plenty of compilation warnings HOT 3
- Memory leak when disabling help HOT 3
- handling of default argument -h HOT 5
- Positional Arguments HOT 5
- How to get a flag HOT 5
- help not displayed if required field has not been set HOT 3
- Backward compatibility HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cmdparser.