diff options
author | Roland Reichwein <mail@reichwein.it> | 2024-05-09 11:53:46 +0200 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2024-05-09 11:53:46 +0200 |
commit | 20a2aa6070d6e7e6a1bd9e0bb2e85eca10543bbc (patch) | |
tree | 61af71c9a6a4d255fa5366b5b866b7091d13a406 /programopts.h | |
parent | 89b05af725d216553924fbec4331c13e7313e66c (diff) |
Added programopts
Diffstat (limited to 'programopts.h')
-rw-r--r-- | programopts.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/programopts.h b/programopts.h new file mode 100644 index 0000000..442d3b0 --- /dev/null +++ b/programopts.h @@ -0,0 +1,29 @@ +// Parse command line options of program + +#pragma once + +#include <functional> +#include <map> +#include <memory> +#include <string> +#include <vector> + +#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<std::string, std::function<bool(const std::string&)>>& option_prefixes); + ~ProgramOpts(); + void process(); // must be called to run functions per option, given to ctor + std::string programName(); + std::vector<std::string> nonOptionArguments(); +private: + struct impl; + std::unique_ptr<impl> m_pimpl; +}; + +} // namespace |