From 8f740d1979d4ca40011a0879d02317d6d37049ba Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Wed, 6 Mar 2024 00:05:31 +0000 Subject: [PATCH] wip args parser --- engine/include/vull/support/args_parser.hh | 59 +++++ engine/include/vull/support/string.hh | 11 +- engine/include/vull/support/string_view.hh | 37 +++ engine/sources/CMakeLists.txt | 1 + engine/sources/support/args_parser.cc | 295 +++++++++++++++++++++ engine/sources/support/string.cc | 35 ++- engine/sources/support/string_builder.cc | 5 + tools/vsi.cc | 27 +- 8 files changed, 438 insertions(+), 32 deletions(-) create mode 100644 engine/include/vull/support/args_parser.hh create mode 100644 engine/sources/support/args_parser.cc 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