Commit b575011d authored by aligungr's avatar aligungr

Options parser improvement

parent 6fa5b4f3
This diff is collapsed.
...@@ -83,8 +83,8 @@ struct OptionsDescription ...@@ -83,8 +83,8 @@ struct OptionsDescription
class IOptionsHandler class IOptionsHandler
{ {
virtual std::istream istream() = 0; public:
virtual std::ostream ostream() = 0; virtual std::ostream &ostream(bool isError) = 0;
virtual void status(int code) = 0; virtual void status(int code) = 0;
}; };
...@@ -93,13 +93,12 @@ class OptionsResult ...@@ -93,13 +93,12 @@ class OptionsResult
private: private:
std::vector<std::string> m_positionalParams{}; std::vector<std::string> m_positionalParams{};
std::unordered_map<std::string, std::string> m_options{}; std::unordered_map<std::string, std::string> m_options{};
std::unique_ptr<IOptionsHandler> m_handler; IOptionsHandler *m_handler;
OptionsDescription m_description; OptionsDescription m_description;
public: public:
OptionsResult(int argc, char **argv, const OptionsDescription &desc, bool freeArgv = false, OptionsResult(int argc, char **argv, const OptionsDescription &desc, bool freeArgv, IOptionsHandler *handler);
std::unique_ptr<IOptionsHandler> handler = nullptr); OptionsResult(const std::vector<std::string> &args, const OptionsDescription &desc, IOptionsHandler *handler);
OptionsResult(const std::vector<std::string> &args, const OptionsDescription &desc);
public: public:
bool hasFlag(const OptionItem &item) const; bool hasFlag(const OptionItem &item) const;
...@@ -109,9 +108,9 @@ class OptionsResult ...@@ -109,9 +108,9 @@ class OptionsResult
std::string getOption(const OptionItem &item) const; std::string getOption(const OptionItem &item) const;
public: public:
[[noreturn]] void help() const; void showHelp() const;
[[noreturn]] void version() const; void showVersion() const;
[[noreturn]] void error(const std::string &msg) const; void showError(const std::string &msg) const;
}; };
enum class ExpansionResult enum class ExpansionResult
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment