/* * ap.hpp * * Created on: 05 сен. 2022 г. * Author: alexander */ #pragma once #include #include #include #include #include #include namespace ap { enum hasArg { NO, REQUIRED, OPTIONAL }; typedef std::vector (*_handler)(const std::vector&); class ConfigOption { private: char *_longParameter; const char _shortParameter; const hasArg _ha; public: ConfigOption(const std::string &longParameter, const char shortParameter, const hasArg ha); const char* getLongParameter() const; const char& getShortParameter() const; const hasArg& getPresenceArgument() const; }; class Option { private: std::vector _values; bool _set; public: Option(); void push(const std::string &value); std::vector& getValues(); void set(); bool isSet() const; }; class Hub { private: struct option *_longOptions; size_t _sizeOptions; char *_shortOptions; std::map> _arguments; void _createArguments(const std::vector &options, bool silence); public: Hub(const std::vector &options, bool silence = true); void readArguments(int argc, char *argv[], void (*_callback)() = nullptr); Option getOption(char key) const; ~Hub(); }; }