Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-12-24 13:50:39 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-12-24 13:50:39 +0300
commitbc5b56e2a8f962f7116b1d8ccdd20f07e2ff0d2b (patch)
tree3815e142049e3cd49f39fe875bccfc9462c233a1 /source
parentc34d2f4449b1ee6488b3024bf820e49528c1cf53 (diff)
RNA
* RNA_enum_is_equal function to quickly compare with enum identifier name.
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesrna/RNA_access.h1
-rw-r--r--source/blender/makesrna/intern/rna_access.c22
2 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 00e4ef299b1..cb57343a50e 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -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);
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 2ed0848e159..4c6c7cabf9e 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -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);