[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18042] branches/blender2.5/blender/source /blender/makesrna: RNA

Brecht Van Lommel brecht at blender.org
Wed Dec 24 11:50:42 CET 2008


Revision: 18042
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18042
Author:   blendix
Date:     2008-12-24 11:50:39 +0100 (Wed, 24 Dec 2008)

Log Message:
-----------
RNA
* RNA_enum_is_equal function to quickly compare with enum identifier name.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2008-12-24 10:43:39 UTC (rev 18041)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2008-12-24 10:50:39 UTC (rev 18042)
@@ -321,6 +321,7 @@
 
 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);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2008-12-24 10:43:39 UTC (rev 18041)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2008-12-24 10:50:39 UTC (rev 18042)
@@ -1588,6 +1588,28 @@
 		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);





More information about the Bf-blender-cvs mailing list