First highlevel setter, small api change
* setters return LumieraConfigitem (or NULL) instead int * the config_string_set works now
This commit is contained in:
parent
61735098ae
commit
e8cc26efa4
4 changed files with 25 additions and 15 deletions
|
|
@ -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'",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue