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);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to