From 458e0005690ea9d579588a0a12368fc2c2c9a93a Mon Sep 17 00:00:00 2001 From: untodesu Date: Tue, 1 Jul 2025 03:08:39 +0500 Subject: I hyper-focued on refactoring again - I put a cool-sounding "we are number one" remix on repeat and straight up grinded the entire repository to a better state until 03:09 AM. I guess I have something wrong in my brain that makes me do this shit --- src/core/cmdline.cc | 81 ----------------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 src/core/cmdline.cc (limited to 'src/core/cmdline.cc') diff --git a/src/core/cmdline.cc b/src/core/cmdline.cc deleted file mode 100644 index c83f9e6..0000000 --- a/src/core/cmdline.cc +++ /dev/null @@ -1,81 +0,0 @@ -#include "core/pch.hh" - -#include "core/cmdline.hh" - -// Valid options always start with OPTION_PREFIX, can contain -// a bunch of OPTION_PREFIX'es inside and never end with one -constexpr static char OPTION_PREFIX = '-'; - -static std::unordered_map options; - -static inline bool is_option_string(const std::string& string) -{ - if(string.find_last_of(OPTION_PREFIX) >= (string.size() - 1)) { - return false; - } - - return string[0] == OPTION_PREFIX; -} - -static inline std::string get_option(const std::string& string) -{ - std::size_t i; - for(i = 0; string[i] == OPTION_PREFIX; ++i) - ; - return std::string(string.cbegin() + i, string.cend()); -} - -void cmdline::create(int argc, char** argv) -{ - for(int idx = 1; idx < argc; ++idx) { - std::string string = argv[idx]; - - if(!is_option_string(string)) { - spdlog::warn("cmdline: non-argument at {}: {}", idx, string); - continue; - } - - auto option_string = get_option(string); - auto next_idx = idx + 1; - - if(next_idx < argc) { - std::string argument = argv[next_idx]; - - if(!is_option_string(argument)) { - options.insert_or_assign(option_string, argument); - idx = next_idx; - continue; - } - } - - // The option is either last or has no - // argument (happens when there is a valid - // option right next to the one we're parsing) - options.insert_or_assign(option_string, std::string()); - } -} - -void cmdline::insert(const char* option, const char* argument) -{ - if(argument == nullptr) { - options.insert_or_assign(option, std::string()); - } else { - options.insert_or_assign(option, argument); - } -} - -const char* cmdline::get(const char* option, const char* fallback) -{ - auto it = options.find(option); - - if(it == options.cend()) { - return fallback; - } - - return it->second.c_str(); -} - -bool cmdline::contains(const char* option) -{ - return options.count(option); -} -- cgit