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: