diff options
Diffstat (limited to 'src/argument_parser.cpp')
| -rw-r--r-- | src/argument_parser.cpp | 104 | 
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; -} | 
