Commit c10bece4955d6122e0ce6d34d57c3729d99cd8a1
1 parent
9c55fa28
Making app pointer optional
Showing
2 changed files
with
10 additions
and
4 deletions
include/CLI.hpp
| @@ -596,9 +596,16 @@ protected: | @@ -596,9 +596,16 @@ protected: | ||
| 596 | std::function<void(App*)> app_callback; | 596 | std::function<void(App*)> app_callback; |
| 597 | 597 | ||
| 598 | public: | 598 | public: |
| 599 | - | ||
| 600 | - void set_callback(std::function<void(App*)> callback) { | 599 | + /// Set a callback to run at the end of parsing |
| 600 | + App* set_callback(std::function<void(App*)> callback) { | ||
| 601 | app_callback = callback; | 601 | app_callback = callback; |
| 602 | + return this; | ||
| 603 | + } | ||
| 604 | + | ||
| 605 | + /// Don't have to worry about explicit App* in argument | ||
| 606 | + App* set_callback(std::function<void()> callback) { | ||
| 607 | + app_callback = [callback](App*){callback();}; | ||
| 608 | + return this; | ||
| 602 | } | 609 | } |
| 603 | 610 | ||
| 604 | void run_callback() { | 611 | void run_callback() { |
tests/CLITest.cpp
| @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) { | @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) { | ||
| 338 | }); | 338 | }); |
| 339 | auto sub2 = app.add_subcommand("sub2"); | 339 | auto sub2 = app.add_subcommand("sub2"); |
| 340 | bool val = false; | 340 | bool val = false; |
| 341 | - sub2->set_callback([&val](CLI::App*){ | 341 | + sub2->set_callback([&val](){ |
| 342 | val = true; | 342 | val = true; |
| 343 | }); | 343 | }); |
| 344 | - | ||
| 345 | 344 | ||
| 346 | app.reset(); | 345 | app.reset(); |
| 347 | args = {"sub2"}; | 346 | args = {"sub2"}; |