From fab5891efe048167b3a667a9e252ac6a3a12cbc6 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Tue, 30 Jun 2015 22:07:02 +1000 Subject: [PATCH] cmdopt: add present option --- cmdopt.cpp | 24 ++++++++++++++++++++++++ cmdopt.hpp | 14 ++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/cmdopt.cpp b/cmdopt.cpp index 8adb50e6..fded38b4 100644 --- a/cmdopt.cpp +++ b/cmdopt.cpp @@ -138,6 +138,30 @@ null::execute (const char *restrict) } +/////////////////////////////////////////////////////////////////////////////// +present::present (std::string _name, bool &_data): + base (std::move (_name)), + m_data (_data) +{ ; } + + +//----------------------------------------------------------------------------- +void +present::execute (void) +{ + seen (true); +} + + +//----------------------------------------------------------------------------- +void +present::finish (void) +{ + m_data = seen (); + base::finish (); +} + + //----------------------------------------------------------------------------- namespace util { namespace cmdopt { namespace option { template class value; diff --git a/cmdopt.hpp b/cmdopt.hpp index 1b3e0814..c57651e6 100644 --- a/cmdopt.hpp +++ b/cmdopt.hpp @@ -60,6 +60,20 @@ namespace util { namespace cmdopt { }; + class present : public base { + public: + present (std::string name, bool&); + + using base::execute; + virtual void execute (void) override; + + virtual void finish (void) override; + + private: + bool &m_data; + }; + + template class value : public base { public: