ConfigFile: add struct ConfigData
This commit is contained in:
parent
823c618d24
commit
72070f292b
@ -20,11 +20,19 @@
|
|||||||
#ifndef MPD_CONFIG_DATA_HXX
|
#ifndef MPD_CONFIG_DATA_HXX
|
||||||
#define MPD_CONFIG_DATA_HXX
|
#define MPD_CONFIG_DATA_HXX
|
||||||
|
|
||||||
|
#include "ConfigOption.hxx"
|
||||||
#include "gerror.h"
|
#include "gerror.h"
|
||||||
#include "gcc.h"
|
#include "gcc.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include <glib.h>
|
||||||
|
#include <array>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
struct block_param {
|
struct block_param {
|
||||||
char *name;
|
char *name;
|
||||||
char *value;
|
char *value;
|
||||||
@ -37,6 +45,8 @@ struct block_param {
|
|||||||
bool used;
|
bool used;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
struct config_param {
|
struct config_param {
|
||||||
char *value;
|
char *value;
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
@ -51,6 +61,14 @@ struct config_param {
|
|||||||
bool used;
|
bool used;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
struct ConfigData {
|
||||||
|
std::array<GSList *, std::size_t(CONF_MAX)> params;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -47,7 +47,7 @@ extern "C" {
|
|||||||
|
|
||||||
#define CONF_COMMENT '#'
|
#define CONF_COMMENT '#'
|
||||||
|
|
||||||
static GSList *config_params[unsigned(CONF_MAX)];
|
static ConfigData config_data;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
config_param_free_callback(gpointer data, G_GNUC_UNUSED gpointer user_data)
|
config_param_free_callback(gpointer data, G_GNUC_UNUSED gpointer user_data)
|
||||||
@ -59,10 +59,9 @@ config_param_free_callback(gpointer data, G_GNUC_UNUSED gpointer user_data)
|
|||||||
|
|
||||||
void config_global_finish(void)
|
void config_global_finish(void)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < G_N_ELEMENTS(config_params); ++i) {
|
for (auto i : config_data.params) {
|
||||||
g_slist_foreach(config_params[i],
|
g_slist_foreach(i, config_param_free_callback, NULL);
|
||||||
config_param_free_callback, NULL);
|
g_slist_free(i);
|
||||||
g_slist_free(config_params[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,8 +91,8 @@ config_param_check(gpointer data, G_GNUC_UNUSED gpointer user_data)
|
|||||||
|
|
||||||
void config_global_check(void)
|
void config_global_check(void)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < G_N_ELEMENTS(config_params); ++i)
|
for (auto i : config_data.params)
|
||||||
g_slist_foreach(config_params[i], config_param_check, NULL);
|
g_slist_foreach(i, config_param_check, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@ -244,7 +243,7 @@ ReadConfigFile(const Path &path, GError **error_r)
|
|||||||
|
|
||||||
const unsigned i = ParseConfigOptionName(name);
|
const unsigned i = ParseConfigOptionName(name);
|
||||||
const ConfigTemplate &option = config_templates[i];
|
const ConfigTemplate &option = config_templates[i];
|
||||||
GSList *¶ms = config_params[i];
|
GSList *¶ms = config_data.params[i];
|
||||||
|
|
||||||
if (params != NULL && !option.repeatable) {
|
if (params != NULL && !option.repeatable) {
|
||||||
param = (struct config_param *)params->data;
|
param = (struct config_param *)params->data;
|
||||||
@ -323,7 +322,7 @@ ReadConfigFile(const Path &path, GError **error_r)
|
|||||||
const struct config_param *
|
const struct config_param *
|
||||||
config_get_next_param(ConfigOption option, const struct config_param * last)
|
config_get_next_param(ConfigOption option, const struct config_param * last)
|
||||||
{
|
{
|
||||||
GSList *node = config_params[unsigned(option)];
|
GSList *node = config_data.params[unsigned(option)];
|
||||||
|
|
||||||
if (last) {
|
if (last) {
|
||||||
node = g_slist_find(node, last);
|
node = g_slist_find(node, last);
|
||||||
|
Loading…
Reference in New Issue
Block a user