// Parse command line options of program #pragma once #include #include #include #include #include #define EXPORT __attribute__((visibility("default"))) namespace Reichwein { class EXPORT ProgramOpts { public: // Processing of options in lambdas: each do return true iff parameter was consumed ProgramOpts(int argc, char* argv[], std::map>& option_prefixes); ~ProgramOpts(); void process(); // must be called to run functions per option, given to ctor std::string programName(); std::vector nonOptionArguments(); private: struct impl; std::unique_ptr m_pimpl; }; } // namespace