refactor: Replace FlagsOfKnownArg with GetArgFlags

Rename suggested by João Barbosa <joao.paulo.barbosa@gmail.com>
https://github.com/bitcoin/bitcoin/pull/16545#issuecomment-519048000

This also gets rid of ArgsManager::NONE constant, which was an implementation
detail not meant to be used by ArgsManager callers.

Finally this reverts a change from 7f40528cd5
https://github.com/bitcoin/bitcoin/pull/15934 adding "-" characters to argument
names. Better for GetArgFlags to require "-" prefixes for consistency with
other ArgsManager methods, and to be more efficient later when GetArg functions
need to call GetArgFlags (https://github.com/bitcoin/bitcoin/pull/16545)

This commit does not change behavior.
pull/764/head
Russell Yanofsky 5 years ago
parent 57e8b7a727
commit dc0f148074

@ -326,9 +326,9 @@ bool ArgsManager::ParseParameters(int argc, const char* const argv[], std::strin
key.erase(0, 1); key.erase(0, 1);
std::string section; std::string section;
util::SettingsValue value = InterpretOption(section, key, val); util::SettingsValue value = InterpretOption(section, key, val);
const unsigned int flags = FlagsOfKnownArg(key); Optional<unsigned int> flags = GetArgFlags('-' + key);
if (flags) { if (flags) {
if (!CheckValid(key, value, flags, error)) { if (!CheckValid(key, value, *flags, error)) {
return false; return false;
} }
// Weird behavior preserved for backwards compatibility: command // Weird behavior preserved for backwards compatibility: command
@ -355,16 +355,16 @@ bool ArgsManager::ParseParameters(int argc, const char* const argv[], std::strin
return success; return success;
} }
unsigned int ArgsManager::FlagsOfKnownArg(const std::string& key) const Optional<unsigned int> ArgsManager::GetArgFlags(const std::string& name) const
{ {
LOCK(cs_args); LOCK(cs_args);
for (const auto& arg_map : m_available_args) { for (const auto& arg_map : m_available_args) {
const auto search = arg_map.second.find('-' + key); const auto search = arg_map.second.find(name);
if (search != arg_map.second.end()) { if (search != arg_map.second.end()) {
return search->second.m_flags; return search->second.m_flags;
} }
} }
return ArgsManager::NONE; return nullopt;
} }
std::vector<std::string> ArgsManager::GetArgs(const std::string& strArg) const std::vector<std::string> ArgsManager::GetArgs(const std::string& strArg) const
@ -745,9 +745,9 @@ bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& file
std::string section; std::string section;
std::string key = option.first; std::string key = option.first;
util::SettingsValue value = InterpretOption(section, key, option.second); util::SettingsValue value = InterpretOption(section, key, option.second);
const unsigned int flags = FlagsOfKnownArg(key); Optional<unsigned int> flags = GetArgFlags('-' + key);
if (flags) { if (flags) {
if (!CheckValid(key, value, flags, error)) { if (!CheckValid(key, value, *flags, error)) {
return false; return false;
} }
m_settings.ro_config[section][key].push_back(value); m_settings.ro_config[section][key].push_back(value);

@ -19,6 +19,7 @@
#include <compat/assumptions.h> #include <compat/assumptions.h>
#include <fs.h> #include <fs.h>
#include <logging.h> #include <logging.h>
#include <optional.h>
#include <sync.h> #include <sync.h>
#include <tinyformat.h> #include <tinyformat.h>
#include <util/memory.h> #include <util/memory.h>
@ -132,7 +133,6 @@ class ArgsManager
{ {
public: public:
enum Flags { enum Flags {
NONE = 0x00,
// Boolean options can accept negation syntax -noOPTION or -noOPTION=1 // Boolean options can accept negation syntax -noOPTION or -noOPTION=1
ALLOW_BOOL = 0x01, ALLOW_BOOL = 0x01,
ALLOW_INT = 0x02, ALLOW_INT = 0x02,
@ -296,9 +296,9 @@ public:
/** /**
* Return Flags for known arg. * Return Flags for known arg.
* Return ArgsManager::NONE for unknown arg. * Return nullopt for unknown arg.
*/ */
unsigned int FlagsOfKnownArg(const std::string& key) const; Optional<unsigned int> GetArgFlags(const std::string& name) const;
}; };
extern ArgsManager gArgs; extern ArgsManager gArgs;

Loading…
Cancel
Save