enum: Return boolean result for enum_from_name() lookup
Handling the result for enum_from_name() is difficult, as checking for negative return values requires a cast if the enum type is unsigned. The new signature clearly differentiates lookup result from lookup value. Further, this actually allows to convert real -1 enum values, which could not be distinguished from "not-found" and the -1 return value. This also fixes several clang warnings where enums are unsigned.
This commit is contained in:
@@ -40,7 +40,7 @@ char *enum_to_name(enum_name_t *e, int val)
|
||||
/**
|
||||
* See header.
|
||||
*/
|
||||
int enum_from_name(enum_name_t *e, char *name)
|
||||
bool enum_from_name_as_int(enum_name_t *e, const char *name, int *val)
|
||||
{
|
||||
do
|
||||
{
|
||||
@@ -50,12 +50,13 @@ int enum_from_name(enum_name_t *e, char *name)
|
||||
{
|
||||
if (name && strcaseeq(name, e->names[i]))
|
||||
{
|
||||
return e->first + i;
|
||||
*val = e->first + i;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
while ((e = e->next));
|
||||
return -1;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user