aboutsummaryrefslogtreecommitdiff
path: root/src/argument_parser.cpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-06-02 20:07:09 +0200
committerHampusM <hampus@hampusmat.com>2022-06-13 17:57:00 +0200
commitcf3bfd60ad03f2feb2ccc62a12fc2922bdc2fb71 (patch)
tree9ea6c1465ec499cff6b24fe57d1a1b2e469a2dd1 /src/argument_parser.cpp
parenteecf4b1e666211a13afa56f93477c55e8fd01621 (diff)
refactor: remove randomization & argument parser
Diffstat (limited to 'src/argument_parser.cpp')
-rw-r--r--src/argument_parser.cpp104
1 files changed, 0 insertions, 104 deletions
diff --git a/src/argument_parser.cpp b/src/argument_parser.cpp
deleted file mode 100644
index 117d979..0000000
--- a/src/argument_parser.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "argument_parser.hpp"
-
-#include "conversion.hpp"
-#include "interfaces/randomization.hpp"
-
-#include <cstdlib>
-#include <iostream>
-#include <string_view>
-
-namespace
-{
-void optarg_error(char arg, const std::string_view &error) noexcept
-{
- std::cout << "Error: Invalid option argument for -" << arg << ". " << error
- << std::endl;
- exit(EXIT_FAILURE);
-}
-
-/**
- * Returns the current optarg as a string view.
- */
-auto get_str_optarg() noexcept -> std::string_view
-{
- return {optarg};
-}
-
-/**
- * Returns the current optarg as a unsigned integer.
- *
- * @param arg The current command-line argument character
- * @param check_zero Whether or not to make sure that the result is not zero
- */
-auto get_uint_optarg(char arg, bool check_zero = false) noexcept -> uint32_t
-{
- auto conversion_result = str_to_uint(get_str_optarg());
-
- if (!conversion_result.success || (check_zero && conversion_result.result == 0))
- {
- optarg_error(arg, conversion_result.fail_reason);
- }
-
- return conversion_result.result;
-}
-} // namespace
-
-ArgumentParser::ArgumentParser(
- IRandomNumberGeneratorFactory random_number_generator_factory) noexcept
- : _random_number_generator_factory(random_number_generator_factory)
-{
-}
-
-auto ArgumentParser::parse(
- const std::vector<option> &options,
- const std::string_view &short_options,
- const int &argc,
- char *const *argv) noexcept
- -> ParsedArguments // NOLINT(cppcoreguidelines-avoid-c-arrays,
- // modernize-avoid-c-arrays)
-{
- // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
- const auto args = std::vector<std::string_view>(argv, argv + argc);
-
- const auto program_name = args[0];
-
- ParsedArguments parsed_arguments;
-
- char arg = 0;
- while (
- (arg = static_cast<char>(
- getopt_long(argc, argv, short_options.data(), options.data(), nullptr))) !=
- -1)
- {
- switch (arg)
- {
- case 's':
- {
- auto seed = get_uint_optarg(arg, true);
-
- parsed_arguments.random_gen = _random_number_generator_factory(seed);
- break;
- }
- case 'h':
- {
- std::cout << "Usage: " << program_name
- << " [OPTION]...\n\n"
- "Options:\n"
- << " -s, --seed SEED The randomization seed used\n"
- " -h --help Displays usage information"
- << std::endl;
- exit(EXIT_SUCCESS);
- }
- case '?':
- {
- std::cout << "\nTry '" << program_name << " --help' for more information"
- << std::endl;
- exit(EXIT_FAILURE);
- }
- default:
- abort();
- }
- }
-
- return parsed_arguments;
-}