config/Param: split block-specific attributes to new struct ConfigBlock

The old struct config_param remains only for top-level string options.
This commit is contained in:
Max Kellermann
2015-01-21 22:13:44 +01:00
parent 84e74173de
commit 4fa5538e2b
114 changed files with 871 additions and 732 deletions

View File

@@ -36,7 +36,7 @@
#include "tag/Tag.hxx"
#include "AudioFormat.hxx"
#include "MixRampInfo.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "Chrono.hxx"
// IWYU pragma: end_exports

View File

@@ -21,7 +21,7 @@
#include "DecoderList.hxx"
#include "DecoderPlugin.hxx"
#include "config/ConfigGlobal.hxx"
#include "config/Param.hxx"
#include "config/Block.hxx"
#include "plugins/AudiofileDecoderPlugin.hxx"
#include "plugins/PcmDecoderPlugin.hxx"
#include "plugins/DsdiffDecoderPlugin.hxx"
@@ -127,12 +127,12 @@ decoder_plugin_from_name(const char *name)
void decoder_plugin_init_all(void)
{
struct config_param empty;
ConfigBlock empty;
for (unsigned i = 0; decoder_plugins[i] != nullptr; ++i) {
const DecoderPlugin &plugin = *decoder_plugins[i];
const struct config_param *param =
config_find_block(ConfigOption::DECODER, "plugin",
const auto *param =
config_find_block(ConfigBlockOption::DECODER, "plugin",
plugin.name);
if (param == nullptr)

View File

@@ -22,7 +22,7 @@
#include "Compiler.h"
struct config_param;
struct ConfigBlock;
class InputStream;
struct tag_handler;
class Path;
@@ -44,7 +44,7 @@ struct DecoderPlugin {
* @return true if the plugin was initialized successfully,
* false if the plugin is not available
*/
bool (*init)(const config_param &param);
bool (*init)(const ConfigBlock &block);
/**
* Deinitialize a decoder plugin which was initialized
@@ -112,9 +112,9 @@ struct DecoderPlugin {
* @return true if the plugin was initialized successfully, false if
* the plugin is not available
*/
bool Init(const config_param &param) const {
bool Init(const ConfigBlock &block) const {
return init != nullptr
? init(param)
? init(block)
: true;
}

View File

@@ -38,14 +38,14 @@ static constexpr Domain adplug_domain("adplug");
static unsigned sample_rate;
static bool
adplug_init(const config_param &param)
adplug_init(const ConfigBlock &block)
{
FormatDebug(adplug_domain, "adplug %s",
CAdPlug::get_version().c_str());
Error error;
sample_rate = param.GetBlockValue("sample_rate", 48000u);
sample_rate = block.GetBlockValue("sample_rate", 48000u);
if (!audio_check_sample_rate(sample_rate, error)) {
LogError(error);
return false;

View File

@@ -43,7 +43,7 @@ audiofile_error_func(long, const char *msg)
}
static bool
audiofile_init(const config_param &)
audiofile_init(const ConfigBlock &)
{
afSetErrorHandler(audiofile_error_func);
return true;

View File

@@ -72,9 +72,9 @@ struct DsdiffMetaData {
static bool lsbitfirst;
static bool
dsdiff_init(const config_param &param)
dsdiff_init(const ConfigBlock &block)
{
lsbitfirst = param.GetBlockValue("lsbitfirst", false);
lsbitfirst = block.GetBlockValue("lsbitfirst", false);
return true;
}

View File

@@ -73,7 +73,7 @@ FfmpegOpenInput(AVIOContext *pb,
}
static bool
ffmpeg_init(gcc_unused const config_param &param)
ffmpeg_init(gcc_unused const ConfigBlock &block)
{
FfmpegInit();
return true;

View File

@@ -291,7 +291,7 @@ flac_decode(Decoder &decoder, InputStream &input_stream)
}
static bool
oggflac_init(gcc_unused const config_param &param)
oggflac_init(gcc_unused const ConfigBlock &block)
{
return !!FLAC_API_SUPPORTS_OGG_FLAC;
}

View File

@@ -73,17 +73,17 @@ fluidsynth_mpd_log_function(int level, char *message, gcc_unused void *data)
}
static bool
fluidsynth_init(const config_param &param)
fluidsynth_init(const ConfigBlock &block)
{
Error error;
sample_rate = param.GetBlockValue("sample_rate", 48000u);
sample_rate = block.GetBlockValue("sample_rate", 48000u);
if (!audio_check_sample_rate(sample_rate, error)) {
LogError(error);
return false;
}
soundfont_path = param.GetBlockValue("soundfont",
soundfont_path = block.GetBlockValue("soundfont",
"/usr/share/sounds/sf2/FluidR3_GM.sf2");
fluid_set_log_function(LAST_LOG_LEVEL,

View File

@@ -107,7 +107,7 @@ mad_fixed_to_24_buffer(int32_t *dest, const struct mad_synth *synth,
}
static bool
mp3_plugin_init(gcc_unused const config_param &param)
mp3_plugin_init(gcc_unused const ConfigBlock &block)
{
gapless_playback = config_get_bool(ConfigOption::GAPLESS_MP3_PLAYBACK,
DEFAULT_GAPLESS_MP3_PLAYBACK);

View File

@@ -109,15 +109,15 @@ static bool mikmod_loop;
static unsigned mikmod_sample_rate;
static bool
mikmod_decoder_init(const config_param &param)
mikmod_decoder_init(const ConfigBlock &block)
{
static char params[] = "";
mikmod_loop = param.GetBlockValue("loop", false);
mikmod_sample_rate = param.GetBlockValue("sample_rate", 44100u);
mikmod_loop = block.GetBlockValue("loop", false);
mikmod_sample_rate = block.GetBlockValue("sample_rate", 44100u);
if (!audio_valid_sample_rate(mikmod_sample_rate))
FormatFatalError("Invalid sample rate in line %d: %u",
param.line, mikmod_sample_rate);
block.line, mikmod_sample_rate);
md_device = 0;
md_reverb = 0;

View File

@@ -41,12 +41,12 @@ static constexpr offset_type MODPLUG_FILE_LIMIT = 100 * 1024 * 1024;
static int modplug_loop_count;
static bool
modplug_decoder_init(const config_param &param)
modplug_decoder_init(const ConfigBlock &block)
{
modplug_loop_count = param.GetBlockValue("loop_count", 0);
modplug_loop_count = block.GetBlockValue("loop_count", 0);
if (modplug_loop_count < -1)
FormatFatalError("Invalid loop count in line %d: %i",
param.line, modplug_loop_count);
block.line, modplug_loop_count);
return true;
}

View File

@@ -37,7 +37,7 @@
static constexpr Domain mpg123_domain("mpg123");
static bool
mpd_mpg123_init(gcc_unused const config_param &param)
mpd_mpg123_init(gcc_unused const ConfigBlock &block)
{
mpg123_init();

View File

@@ -61,7 +61,7 @@ IsOpusTags(const ogg_packet &packet)
}
static bool
mpd_opus_init(gcc_unused const config_param &param)
mpd_opus_init(gcc_unused const ConfigBlock &block)
{
LogDebug(opus_domain, opus_get_version_string());

View File

@@ -64,22 +64,22 @@ sidplay_load_songlength_db(const Path path)
}
static bool
sidplay_init(const config_param &param)
sidplay_init(const ConfigBlock &block)
{
/* read the songlengths database file */
Error error;
const auto database_path = param.GetBlockPath("songlength_database", error);
const auto database_path = block.GetBlockPath("songlength_database", error);
if (!database_path.IsNull())
songlength_database = sidplay_load_songlength_db(database_path);
else if (error.IsDefined())
FatalError(error);
default_songlength = param.GetBlockValue("default_songlength", 0u);
default_songlength = block.GetBlockValue("default_songlength", 0u);
all_files_are_containers =
param.GetBlockValue("all_files_are_containers", true);
block.GetBlockValue("all_files_are_containers", true);
filter_setting = param.GetBlockValue("filter", true);
filter_setting = block.GetBlockValue("filter", true);
return true;
}

View File

@@ -32,7 +32,7 @@
static constexpr Domain sndfile_domain("sndfile");
static bool
sndfile_init(gcc_unused const config_param &param)
sndfile_init(gcc_unused const ConfigBlock &block)
{
LogDebug(sndfile_domain, sf_version_string());
return true;

View File

@@ -194,7 +194,7 @@ vorbis_interleave(float *dest, const float *const*src,
/* public */
static bool
vorbis_init(gcc_unused const config_param &param)
vorbis_init(gcc_unused const ConfigBlock &block)
{
#ifndef HAVE_TREMOR
LogDebug(vorbis_domain, vorbis_version_string());

View File

@@ -38,11 +38,11 @@ static constexpr Domain wildmidi_domain("wildmidi");
static constexpr unsigned WILDMIDI_SAMPLE_RATE = 48000;
static bool
wildmidi_init(const config_param &param)
wildmidi_init(const ConfigBlock &block)
{
Error error;
const AllocatedPath path =
param.GetBlockPath("config_file",
block.GetBlockPath("config_file",
"/etc/timidity/timidity.cfg",
error);
if (path.IsNull())