* RNA_enum_is_equal function to quickly compare with enum identifier name.
This commit is contained in:
Brecht Van Lommel 2008-12-24 10:50:39 +00:00
parent c34d2f4449
commit bc5b56e2a8
2 changed files with 23 additions and 0 deletions

@ -321,6 +321,7 @@ void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
int RNA_enum_get(PointerRNA *ptr, const char *name);
void RNA_enum_set(PointerRNA *ptr, const char *name, int value);
int RNA_enum_is_equal(PointerRNA *ptr, const char *name, const char *enumname);
void RNA_string_get(PointerRNA *ptr, const char *name, char *value);
char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen);

@ -1588,6 +1588,28 @@ void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
printf("RNA_enum_set: %s.%s not found.\n", ptr->type->identifier, name);
}
int RNA_enum_is_equal(PointerRNA *ptr, const char *name, const char *enumname)
{
PropertyRNA *prop= RNA_struct_find_property(ptr, name);
const EnumPropertyItem *item;
int a, totitem;
if(prop) {
RNA_property_enum_items(ptr, prop, &item, &totitem);
for(a=0; a<totitem; a++)
if(strcmp(item->identifier, enumname) == 0)
return (item->value == RNA_property_enum_get(ptr, prop));
printf("RNA_enum_is_equal: %s.%s item %s not found.\n", ptr->type->identifier, name, enumname);
return 0;
}
else {
printf("RNA_enum_is_equal: %s.%s not found.\n", ptr->type->identifier, name);
return 0;
}
}
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
{
PropertyRNA *prop= RNA_struct_find_property(ptr, name);