#ifndef __SCOP_CLI__ #define __SCOP_CLI__ #include #include #include #include namespace Scop { class CommandLineInterface { public: inline CommandLineInterface(); inline std::optional GetOption(std::string_view option) const; inline std::optional GetArgument(std::string_view arg) const; inline bool HasFlag(std::string_view flag) const; inline const std::string& GetCommand() const; inline void Feed(int ac, char** av); inline static CommandLineInterface& Get() noexcept; inline ~CommandLineInterface(); private: static inline CommandLineInterface* s_instance = nullptr; std::unordered_map m_options; std::unordered_set m_flags; std::unordered_set m_args; std::string m_cmd; }; } #include #endif