diff --git a/engine/include/vull/support/args_parser.hh b/engine/include/vull/support/args_parser.hh new file mode 100644 index 00000000..5dde5f50 --- /dev/null +++ b/engine/include/vull/support/args_parser.hh @@ -0,0 +1,59 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace vull { + +enum class ArgsParseResult { + Continue, + ExitFailure, + ExitSuccess, +}; + +class ArgsParser { + struct Argument { + String name; + uint32_t min_values; + uint32_t max_values; + Function accept_value; + + String to_string() const; + }; + + struct Option { + String help_string; + String long_name; + char short_name; + bool has_argument; + Function accept_value; + }; + +private: + String m_name; + String m_description; + String m_version; + Vector m_arguments; + Vector