config/Option: convert to strictly-typed enum
This commit is contained in:
@@ -175,7 +175,7 @@ ReadConfigFile(ConfigData &config_data, FILE *fp, Error &error)
|
||||
"repeatable" flag */
|
||||
|
||||
const ConfigOption o = ParseConfigOptionName(name);
|
||||
if (o == CONF_MAX) {
|
||||
if (o == ConfigOption::MAX) {
|
||||
error.Format(config_file_domain,
|
||||
"unrecognized parameter in config file at "
|
||||
"line %i: %s\n", count, name);
|
||||
|
@@ -22,68 +22,78 @@
|
||||
|
||||
#include "Compiler.h"
|
||||
|
||||
enum ConfigOption {
|
||||
CONF_MUSIC_DIR,
|
||||
CONF_PLAYLIST_DIR,
|
||||
CONF_FOLLOW_INSIDE_SYMLINKS,
|
||||
CONF_FOLLOW_OUTSIDE_SYMLINKS,
|
||||
CONF_DB_FILE,
|
||||
CONF_STICKER_FILE,
|
||||
CONF_LOG_FILE,
|
||||
CONF_PID_FILE,
|
||||
CONF_STATE_FILE,
|
||||
CONF_STATE_FILE_INTERVAL,
|
||||
CONF_RESTORE_PAUSED,
|
||||
CONF_USER,
|
||||
CONF_GROUP,
|
||||
CONF_BIND_TO_ADDRESS,
|
||||
CONF_PORT,
|
||||
CONF_LOG_LEVEL,
|
||||
CONF_ZEROCONF_NAME,
|
||||
CONF_ZEROCONF_ENABLED,
|
||||
CONF_PASSWORD,
|
||||
CONF_DEFAULT_PERMS,
|
||||
CONF_AUDIO_OUTPUT,
|
||||
CONF_AUDIO_OUTPUT_FORMAT,
|
||||
CONF_MIXER_TYPE,
|
||||
CONF_REPLAYGAIN,
|
||||
CONF_REPLAYGAIN_PREAMP,
|
||||
CONF_REPLAYGAIN_MISSING_PREAMP,
|
||||
CONF_REPLAYGAIN_LIMIT,
|
||||
CONF_VOLUME_NORMALIZATION,
|
||||
CONF_SAMPLERATE_CONVERTER,
|
||||
CONF_AUDIO_BUFFER_SIZE,
|
||||
CONF_BUFFER_BEFORE_PLAY,
|
||||
CONF_HTTP_PROXY_HOST,
|
||||
CONF_HTTP_PROXY_PORT,
|
||||
CONF_HTTP_PROXY_USER,
|
||||
CONF_HTTP_PROXY_PASSWORD,
|
||||
CONF_CONN_TIMEOUT,
|
||||
CONF_MAX_CONN,
|
||||
CONF_MAX_PLAYLIST_LENGTH,
|
||||
CONF_MAX_COMMAND_LIST_SIZE,
|
||||
CONF_MAX_OUTPUT_BUFFER_SIZE,
|
||||
CONF_FS_CHARSET,
|
||||
CONF_ID3V1_ENCODING,
|
||||
CONF_METADATA_TO_USE,
|
||||
CONF_SAVE_ABSOLUTE_PATHS,
|
||||
CONF_DECODER,
|
||||
CONF_INPUT,
|
||||
CONF_GAPLESS_MP3_PLAYBACK,
|
||||
CONF_PLAYLIST_PLUGIN,
|
||||
CONF_AUTO_UPDATE,
|
||||
CONF_AUTO_UPDATE_DEPTH,
|
||||
CONF_DESPOTIFY_USER,
|
||||
CONF_DESPOTIFY_PASSWORD,
|
||||
CONF_DESPOTIFY_HIGH_BITRATE,
|
||||
CONF_AUDIO_FILTER,
|
||||
CONF_DATABASE,
|
||||
CONF_NEIGHBORS,
|
||||
CONF_MAX
|
||||
#if defined(WIN32) && CLANG_OR_GCC_VERSION(4,7)
|
||||
/* "INPUT" is declared by winuser.h */
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wshadow"
|
||||
#endif
|
||||
|
||||
enum class ConfigOption {
|
||||
MUSIC_DIR,
|
||||
PLAYLIST_DIR,
|
||||
FOLLOW_INSIDE_SYMLINKS,
|
||||
FOLLOW_OUTSIDE_SYMLINKS,
|
||||
DB_FILE,
|
||||
STICKER_FILE,
|
||||
LOG_FILE,
|
||||
PID_FILE,
|
||||
STATE_FILE,
|
||||
STATE_FILE_INTERVAL,
|
||||
RESTORE_PAUSED,
|
||||
USER,
|
||||
GROUP,
|
||||
BIND_TO_ADDRESS,
|
||||
PORT,
|
||||
LOG_LEVEL,
|
||||
ZEROCONF_NAME,
|
||||
ZEROCONF_ENABLED,
|
||||
PASSWORD,
|
||||
DEFAULT_PERMS,
|
||||
AUDIO_OUTPUT,
|
||||
AUDIO_OUTPUT_FORMAT,
|
||||
MIXER_TYPE,
|
||||
REPLAYGAIN,
|
||||
REPLAYGAIN_PREAMP,
|
||||
REPLAYGAIN_MISSING_PREAMP,
|
||||
REPLAYGAIN_LIMIT,
|
||||
VOLUME_NORMALIZATION,
|
||||
SAMPLERATE_CONVERTER,
|
||||
AUDIO_BUFFER_SIZE,
|
||||
BUFFER_BEFORE_PLAY,
|
||||
HTTP_PROXY_HOST,
|
||||
HTTP_PROXY_PORT,
|
||||
HTTP_PROXY_USER,
|
||||
HTTP_PROXY_PASSWORD,
|
||||
CONN_TIMEOUT,
|
||||
MAX_CONN,
|
||||
MAX_PLAYLIST_LENGTH,
|
||||
MAX_COMMAND_LIST_SIZE,
|
||||
MAX_OUTPUT_BUFFER_SIZE,
|
||||
FS_CHARSET,
|
||||
ID3V1_ENCODING,
|
||||
METADATA_TO_USE,
|
||||
SAVE_ABSOLUTE_PATHS,
|
||||
DECODER,
|
||||
INPUT,
|
||||
GAPLESS_MP3_PLAYBACK,
|
||||
PLAYLIST_PLUGIN,
|
||||
AUTO_UPDATE,
|
||||
AUTO_UPDATE_DEPTH,
|
||||
DESPOTIFY_USER,
|
||||
DESPOTIFY_PASSWORD,
|
||||
DESPOTIFY_HIGH_BITRATE,
|
||||
AUDIO_FILTER,
|
||||
DATABASE,
|
||||
NEIGHBORS,
|
||||
MAX
|
||||
};
|
||||
|
||||
#if defined(WIN32) && CLANG_OR_GCC_VERSION(4,7)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @return #CONF_MAX if not found
|
||||
* @return #ConfigOption::MAX if not found
|
||||
*/
|
||||
gcc_pure
|
||||
enum ConfigOption
|
||||
|
@@ -70,7 +70,7 @@ GetHome(Error &error)
|
||||
static AllocatedPath
|
||||
GetConfiguredHome(Error &error)
|
||||
{
|
||||
const char *user = config_get_string(CONF_USER, nullptr);
|
||||
const char *user = config_get_string(ConfigOption::USER, nullptr);
|
||||
return user != nullptr
|
||||
? GetHome(user, error)
|
||||
: GetHome(error);
|
||||
|
@@ -84,7 +84,7 @@ const ConfigTemplate config_templates[] = {
|
||||
|
||||
static constexpr unsigned n_config_templates = ARRAY_SIZE(config_templates);
|
||||
|
||||
static_assert(n_config_templates == unsigned(CONF_MAX),
|
||||
static_assert(n_config_templates == unsigned(ConfigOption::MAX),
|
||||
"Wrong number of config_templates");
|
||||
|
||||
ConfigOption
|
||||
@@ -94,5 +94,5 @@ ParseConfigOptionName(const char *name)
|
||||
if (strcmp(config_templates[i].name, name) == 0)
|
||||
return ConfigOption(i);
|
||||
|
||||
return CONF_MAX;
|
||||
return ConfigOption::MAX;
|
||||
}
|
||||
|
@@ -27,7 +27,7 @@
|
||||
struct config_param;
|
||||
|
||||
struct ConfigData {
|
||||
std::array<config_param *, std::size_t(CONF_MAX)> params;
|
||||
std::array<config_param *, std::size_t(ConfigOption::MAX)> params;
|
||||
|
||||
void Clear();
|
||||
};
|
||||
|
Reference in New Issue
Block a user