From b4d6df902253637f24647d3db2bc3781d69eec1c Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 20 Feb 2025 22:54:56 +0100 Subject: Initial commit --- src/args.hh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/args.hh (limited to 'src/args.hh') diff --git a/src/args.hh b/src/args.hh new file mode 100644 index 0000000..8442b16 --- /dev/null +++ b/src/args.hh @@ -0,0 +1,56 @@ +#ifndef ARGS_HH +#define ARGS_HH + +#include +#include +#include +#include +#include + +class Option { +public: + virtual ~Option() = default; + + virtual bool is_set() const = 0; + +protected: + Option() = default; + Option(Option const&) = delete; + Option& operator=(Option const&) = delete; +}; + +class OptionWithArg : public Option { +public: + virtual std::string const& arg() const = 0; +}; + +class Args { +public: + virtual ~Args() = default; + + static std::unique_ptr create(); + + virtual std::shared_ptr