diff options
Diffstat (limited to 'src/glibext/configuration.h')
-rw-r--r-- | src/glibext/configuration.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/src/glibext/configuration.h b/src/glibext/configuration.h index afefed1..aac6dc7 100644 --- a/src/glibext/configuration.h +++ b/src/glibext/configuration.h @@ -105,7 +105,7 @@ void g_config_param_reset(GCfgParam *); void g_config_param_set_value(GCfgParam *, ...); /* Indique la valeur courante d'un paramètre de configuration. */ -void g_config_param_get_value(GCfgParam *, ...); +void g_config_param_get_value(const GCfgParam *, ...); @@ -191,6 +191,7 @@ void g_generic_config_add_group(GGenConfig *, GCfgGroup *); GCfgGroup *__group; \ __group = g_config_group_new(p, t); \ g_generic_config_add_group(c, __group); \ + g_object_unref(G_OBJECT(__group)); \ }) @@ -205,7 +206,10 @@ GCfgParam *_g_generic_config_search(GGenConfig *, const char *, bool); GCfgParam *__param; \ __param = g_generic_config_search(c, p); \ if (__param != NULL) \ + { \ g_config_param_set_value(__param, v); \ + g_object_unref(G_OBJECT(__param)); \ + } \ __param != NULL ? true : false; \ }) @@ -214,51 +218,63 @@ GCfgParam *_g_generic_config_search(GGenConfig *, const char *, bool); GCfgParam *__param; \ __param = g_generic_config_search(c, p); \ if (__param != NULL) \ + { \ g_config_param_get_value(__param, v); \ + g_object_unref(G_OBJECT(__param)); \ + } \ __param != NULL ? true : false; \ }) /* Ajoute un paramètre à une configuration. */ -GCfgParam *_g_generic_config_add_param(GGenConfig *, GCfgParam *, bool); +bool _g_generic_config_add_param(GGenConfig *, GCfgParam *, bool); #define g_generic_config_add_param(c, p) _g_generic_config_add_param(c, p, true) #define g_generic_config_create_param(c, p, t, d) \ ({ \ - GCfgParam *__result; \ - __result = g_config_param_new(p, t, d); \ - __result = g_generic_config_add_param(c, __result); \ + bool __result; \ + GCfgParam *__param; \ + __param = g_config_param_new(p, t, d); \ + __result = g_generic_config_add_param(c, __param); \ + g_object_unref(G_OBJECT(__param)); \ __result; \ }) #define g_generic_config_create_param_if_not_exist(c, p, t, d) \ ({ \ - GCfgParam *__result; \ - __result = g_generic_config_search(c, p); \ - if (__result == NULL) \ + bool __result; \ + GCfgParam *__param; \ + __param = g_generic_config_search(c, p); \ + if (__param == NULL) \ { \ - __result = g_config_param_new(p, t, d); \ - __result = g_generic_config_add_param(c, __result); \ + __param = g_config_param_new(p, t, d); \ + __result = g_generic_config_add_param(c, __param); \ } \ + else \ + __result = true; \ + g_object_unref(G_OBJECT(__param)); \ __result; \ }) #define g_generic_config_create_or_udpdate_param(c, p, t, d, v) \ ({ \ + bool __result; \ GCfgParam *__param; \ __param = g_generic_config_search(c, p); \ if (__param == NULL) \ { \ __param = g_config_param_new(p, t, d); \ - __param = g_generic_config_add_param(c, __param); \ + __result = g_generic_config_add_param(c, __param); \ } \ - if (__param != NULL) \ - g_config_param_set_value(__param, v); \ - __param != NULL ? true : false; \ + else \ + __result = true; \ + g_config_param_set_value(__param, v); \ + g_object_unref(G_OBJECT(__param)); \ + __result; \ }) |