First highlevel setter, small api change

* setters return LumieraConfigitem (or NULL) instead int
 * the config_string_set works now
This commit is contained in:
Christian Thaeter 2008-09-10 13:14:07 +02:00
parent 61735098ae
commit e8cc26efa4
4 changed files with 25 additions and 15 deletions

View file

@ -65,7 +65,7 @@ const char* lumiera_config_defaults[] =
"config.formatstr.real = '= %Lg'",
"config.formatstr.real.dec = '= %Lf'",
"config.formatstr.real.sci = '= %Le'",
"config.formatstr.string = '=%s'",
"config.formatstr.string = '= %s'",
"config.formatstr.string.dquoted = '= \"%s\"'",
"config.formatstr.string.quoted = '= ''%s'''",
"config.formatstr.word = '= %s'",

View file

@ -52,6 +52,7 @@ LUMIERA_ERROR_DECLARE (CONFIG_DEFAULT);
//TODO: Lumiera header includes//
#include "backend/config_lookup.h"
#include "backend/configitem.h"
//TODO: System includes//
#include <nobug.h>
@ -229,8 +230,8 @@ LUMIERA_CONFIG_TYPES
/**
*
*/
#define LUMIERA_CONFIG_TYPE(name, type) \
int \
#define LUMIERA_CONFIG_TYPE(name, type) \
LumieraConfigitem \
lumiera_config_##name##_set (const char* key, type* value);
LUMIERA_CONFIG_TYPES
#undef LUMIERA_CONFIG_TYPE

View file

@ -46,7 +46,7 @@ lumiera_config_link_get (const char* key, const char** value)
return 0;
}
int
LumieraConfigitem
lumiera_config_link_set (const char* key, const char** value)
{
TRACE (config_typed);
@ -87,7 +87,7 @@ lumiera_config_number_get (const char* key, long long* value)
return raw_value;
}
int
LumieraConfigitem
lumiera_config_number_set (const char* key, long long* value)
{
TRACE (config_typed);
@ -108,7 +108,7 @@ lumiera_config_real_get (const char* key, long double* value)
return 0;
}
int
LumieraConfigitem
lumiera_config_real_set (const char* key, long double* value)
{
TRACE (config_typed);
@ -203,12 +203,20 @@ lumiera_config_string_get (const char* key, const char** value)
return *value;
}
int
LumieraConfigitem
lumiera_config_string_set (const char* key, const char** value)
{
TRACE (config_typed);
UNIMPLEMENTED();
return 0;
LumieraConfigitem item = NULL;
LUMIERA_WRLOCK_SECTION (config_typed, &lumiera_global_config->lock)
{
const char* fmt = "= %s"; TODO ("use the config system (config.format*...) to deduce the desired format for this key");
item = lumiera_config_set (key, lumiera_tmpbuf_snprintf (SIZE_MAX, fmt, *value));
}
return item;
}
@ -262,7 +270,7 @@ lumiera_config_word_get (const char* key, const char** value)
return *value;
}
int
LumieraConfigitem
lumiera_config_word_set (const char* key, const char** value)
{
TRACE (config_typed);
@ -283,7 +291,8 @@ lumiera_config_bool_get (const char* key, int* value)
return 0;
}
int
LumieraConfigitem
lumiera_config_bool_set (const char* key, int* value)
{
TRACE (config_typed);

View file

@ -171,14 +171,14 @@ TEST ("string_set")
lumiera_config_init ("./");
lumiera_config_string_set (argv[2], &argv[3]);
FIXME ("handle error");
if (!lumiera_config_string_set (argv[2], &argv[3]))
printf ("failed setting string '%s=%s': %s\n", argv[2], argv[3], lumiera_error ());
const char* string;
if (lumiera_config_get (argv[2], &string))
if (lumiera_config_string_get (argv[2], &string))
printf ("'%s'\n", string);
else
printf ("%s, '%s'\n", lumiera_error (), string);
printf ("%s\n", lumiera_error ());
lumiera_config_destroy ();
}