From c10bece4955d6122e0ce6d34d57c3729d99cd8a1 Mon Sep 17 00:00:00 2001 From: Henry Fredrick Schreiner Date: Fri, 3 Feb 2017 18:27:27 -0500 Subject: [PATCH] Making app pointer optional --- include/CLI.hpp | 11 +++++++++-- tests/CLITest.cpp | 3 +-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/CLI.hpp b/include/CLI.hpp index e6fd5b00..1b83c604 100644 --- a/include/CLI.hpp +++ b/include/CLI.hpp @@ -596,9 +596,16 @@ protected: std::function app_callback; public: - - void set_callback(std::function callback) { + /// Set a callback to run at the end of parsing + App* set_callback(std::function callback) { app_callback = callback; + return this; + } + + /// Don't have to worry about explicit App* in argument + App* set_callback(std::function callback) { + app_callback = [callback](App*){callback();}; + return this; } void run_callback() { diff --git a/tests/CLITest.cpp b/tests/CLITest.cpp index 1022a388..04364045 100644 --- a/tests/CLITest.cpp +++ b/tests/CLITest.cpp @@ -338,10 +338,9 @@ TEST_F(TApp, Callbacks) { }); auto sub2 = app.add_subcommand("sub2"); bool val = false; - sub2->set_callback([&val](CLI::App*){ + sub2->set_callback([&val](){ val = true; }); - app.reset(); args = {"sub2"};