From 36ac4c1cc7f9faee785d7a167893757b1cad4fc9 Mon Sep 17 00:00:00 2001 From: Henry Fredrick Schreiner Date: Sun, 4 Jun 2017 14:13:02 -0400 Subject: [PATCH] Adding example program for prefix program --- examples/CMakeLists.txt | 1 + examples/prefix_command.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 examples/prefix_command.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index f41d948e..1b6f2abc 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -18,3 +18,4 @@ add_cli_exe(simple simple.cpp) add_cli_exe(subcommands subcommands.cpp) add_cli_exe(groups groups.cpp) add_cli_exe(inter_argument_order inter_argument_order.cpp) +add_cli_exe(prefix_command prefix_command.cpp) diff --git a/examples/prefix_command.cpp b/examples/prefix_command.cpp new file mode 100644 index 00000000..103ee833 --- /dev/null +++ b/examples/prefix_command.cpp @@ -0,0 +1,32 @@ +#include "CLI/CLI.hpp" + +int main(int argc, char **argv) { + + CLI::App app("Prefix command app"); + app.prefix_command(); + + std::vector vals; + app.add_option("--vals,-v", vals) + ->expected(1); + + std::vector more_comms; + try { + more_comms = app.parse(argc, argv); + } catch(const CLI::ParseError &e) { + return app.exit(e); + } + + std::cout << "Prefix:"; + for(int v : vals) + std::cout << v << ":"; + + std::cout << std::endl << "Remaining commands: "; + + // Perfer to loop over from beginning, not "pop" order + std::reverse(std::begin(more_comms), std::end(more_comms)); + for(auto com : more_comms) + std::cout << com << " "; + std::cout << std::endl; + + return 0; +}