[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18794] branches/blender2.5/blender/source /blender: RNA: C API

Brecht Van Lommel brecht at blender.org
Mon Feb 2 20:57:58 CET 2009


Revision: 18794
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18794
Author:   blendix
Date:     2009-02-02 20:57:57 +0100 (Mon, 02 Feb 2009)

Log Message:
-----------
RNA: C API

* RNA_blender.h is now generated along with the other files. It is not
  used anywhere yet, and still located quite hidden next to the other
  rna_*_gen.c files. Read only access for now.
* Inherited properties are not copied from the base anymore but
  iterated over. Patch by Vekoon, thanks!
* Array get/set callbacks now do the whole array instead of getting an
  index. This is needed for some layers for example so python can set
  the array as a whole, otherwise the check that one layer has to be
  enabled at all times gets in the way. Also nicer for the C API.
* Also some changes to returning pointers to make the API cleaner, got
  rid of the type() callback and instead let get() return PointerRNA
  with the type included.

The C API looks like this currently:
http://users.pandora.be/blendix/RNA_blender.h

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/fcurve.c
    branches/blender2.5/blender/source/blender/editors/animation/keyframing.c
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_cloth.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_color.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_curve.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_group.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_key.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_lattice.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_main.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_nodetree.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sequence.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sound.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_text.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_userdef.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_world.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c	2009-02-02 19:57:57 UTC (rev 18794)
@@ -200,19 +200,19 @@
 			{
 				case PROP_BOOLEAN:
 					if (RNA_property_array_length(&new_ptr, prop))
-						RNA_property_boolean_set_array(&new_ptr, prop, array_index, (int)value);
+						RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value);
 					else
 						RNA_property_boolean_set(&new_ptr, prop, (int)value);
 					break;
 				case PROP_INT:
 					if (RNA_property_array_length(&new_ptr, prop))
-						RNA_property_int_set_array(&new_ptr, prop, array_index, (int)value);
+						RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value);
 					else
 						RNA_property_int_set(&new_ptr, prop, (int)value);
 					break;
 				case PROP_FLOAT:
 					if (RNA_property_array_length(&new_ptr, prop))
-						RNA_property_float_set_array(&new_ptr, prop, array_index, value);
+						RNA_property_float_set_index(&new_ptr, prop, array_index, value);
 					else
 						RNA_property_float_set(&new_ptr, prop, value);
 					break;

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/fcurve.c	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/fcurve.c	2009-02-02 19:57:57 UTC (rev 18794)
@@ -500,19 +500,19 @@
 		switch (RNA_property_type(&ptr, prop)) {
 			case PROP_BOOLEAN:
 				if (RNA_property_array_length(&ptr, prop))
-					value= (float)RNA_property_boolean_get_array(&ptr, prop, index);
+					value= (float)RNA_property_boolean_get_index(&ptr, prop, index);
 				else
 					value= (float)RNA_property_boolean_get(&ptr, prop);
 				break;
 			case PROP_INT:
 				if (RNA_property_array_length(&ptr, prop))
-					value= (float)RNA_property_int_get_array(&ptr, prop, index);
+					value= (float)RNA_property_int_get_index(&ptr, prop, index);
 				else
 					value= (float)RNA_property_int_get(&ptr, prop);
 				break;
 			case PROP_FLOAT:
 				if (RNA_property_array_length(&ptr, prop))
-					value= RNA_property_float_get_array(&ptr, prop, index);
+					value= RNA_property_float_get_index(&ptr, prop, index);
 				else
 					value= RNA_property_float_get(&ptr, prop);
 				break;

Modified: branches/blender2.5/blender/source/blender/editors/animation/keyframing.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/keyframing.c	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/editors/animation/keyframing.c	2009-02-02 19:57:57 UTC (rev 18794)
@@ -485,19 +485,19 @@
 	switch (RNA_property_type(ptr, prop)) {
 		case PROP_BOOLEAN:
 			if (RNA_property_array_length(ptr, prop))
-				value= (float)RNA_property_boolean_get_array(ptr, prop, index);
+				value= (float)RNA_property_boolean_get_index(ptr, prop, index);
 			else
 				value= (float)RNA_property_boolean_get(ptr, prop);
 			break;
 		case PROP_INT:
 			if (RNA_property_array_length(ptr, prop))
-				value= (float)RNA_property_int_get_array(ptr, prop, index);
+				value= (float)RNA_property_int_get_index(ptr, prop, index);
 			else
 				value= (float)RNA_property_int_get(ptr, prop);
 			break;
 		case PROP_FLOAT:
 			if (RNA_property_array_length(ptr, prop))
-				value= RNA_property_float_get_array(ptr, prop, index);
+				value= RNA_property_float_get_index(ptr, prop, index);
 			else
 				value= RNA_property_float_get(ptr, prop);
 			break;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-02-02 19:57:57 UTC (rev 18794)
@@ -1144,7 +1144,7 @@
 			tot= MIN2(tot, 3);
 
 			for(a=0; a<tot; a++)
-				vec[a]= RNA_property_float_get_array(&but->rnapoin, prop, a);
+				vec[a]= RNA_property_float_get_index(&but->rnapoin, prop, a);
 		}
 	}
 	else if(but->pointype == CHA) {
@@ -1178,7 +1178,7 @@
 			tot= MIN2(tot, 3);
 
 			for(a=0; a<tot; a++)
-				RNA_property_float_set_array(&but->rnapoin, prop, a, vec[a]);
+				RNA_property_float_set_index(&but->rnapoin, prop, a, vec[a]);
 		}
 	}
 	else if(but->pointype == CHA) {
@@ -1218,19 +1218,19 @@
 		switch(RNA_property_type(&but->rnapoin, prop)) {
 			case PROP_BOOLEAN:
 				if(RNA_property_array_length(&but->rnapoin, prop))
-					value= RNA_property_boolean_get_array(&but->rnapoin, prop, but->rnaindex);
+					value= RNA_property_boolean_get_index(&but->rnapoin, prop, but->rnaindex);
 				else
 					value= RNA_property_boolean_get(&but->rnapoin, prop);
 				break;
 			case PROP_INT:
 				if(RNA_property_array_length(&but->rnapoin, prop))
-					value= RNA_property_int_get_array(&but->rnapoin, prop, but->rnaindex);
+					value= RNA_property_int_get_index(&but->rnapoin, prop, but->rnaindex);
 				else
 					value= RNA_property_int_get(&but->rnapoin, prop);
 				break;
 			case PROP_FLOAT:
 				if(RNA_property_array_length(&but->rnapoin, prop))
-					value= RNA_property_float_get_array(&but->rnapoin, prop, but->rnaindex);
+					value= RNA_property_float_get_index(&but->rnapoin, prop, but->rnaindex);
 				else
 					value= RNA_property_float_get(&but->rnapoin, prop);
 				break;
@@ -1282,19 +1282,19 @@
 			switch(RNA_property_type(&but->rnapoin, prop)) {
 				case PROP_BOOLEAN:
 					if(RNA_property_array_length(&but->rnapoin, prop))
-						RNA_property_boolean_set_array(&but->rnapoin, prop, but->rnaindex, value);
+						RNA_property_boolean_set_index(&but->rnapoin, prop, but->rnaindex, value);
 					else
 						RNA_property_boolean_set(&but->rnapoin, prop, value);
 					break;
 				case PROP_INT:
 					if(RNA_property_array_length(&but->rnapoin, prop))
-						RNA_property_int_set_array(&but->rnapoin, prop, but->rnaindex, value);
+						RNA_property_int_set_index(&but->rnapoin, prop, but->rnaindex, value);
 					else
 						RNA_property_int_set(&but->rnapoin, prop, value);
 					break;
 				case PROP_FLOAT:
 					if(RNA_property_array_length(&but->rnapoin, prop))
-						RNA_property_float_set_array(&but->rnapoin, prop, but->rnaindex, value);
+						RNA_property_float_set_index(&but->rnapoin, prop, but->rnaindex, value);
 					else
 						RNA_property_float_set(&but->rnapoin, prop, value);
 					break;

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-02-02 19:57:57 UTC (rev 18794)
@@ -1080,7 +1080,7 @@
 			te->rnaptr= *ptr;
 
 			if(proptype == PROP_POINTER) {
-				RNA_property_pointer_get(ptr, prop, &pptr);
+				pptr= RNA_property_pointer_get(ptr, prop);
 
 				if(pptr.data) {
 					if(!(tselem->flag & TSE_CLOSED))
@@ -4105,7 +4105,7 @@
 			length= RNA_property_array_length(ptr, prop);
 
 			if(length)
-				value= RNA_property_boolean_get_array(ptr, prop, index);
+				value= RNA_property_boolean_get_index(ptr, prop, index);
 			else
 				value= RNA_property_boolean_get(ptr, prop);
 
@@ -4133,7 +4133,7 @@
 			char *text, *descr, textbuf[256];
 			int icon;
 
-			RNA_property_pointer_get(ptr, prop, &pptr);
+			pptr= RNA_property_pointer_get(ptr, prop);
 
 			if(!pptr.data)
 				return NULL;

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-02-02 19:31:43 UTC (rev 18793)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-02-02 19:57:57 UTC (rev 18794)
@@ -341,18 +341,24 @@
 
 int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop);
 void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value);
-int RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int index);
-void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
+void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
+int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
+void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values);
+void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
 
 int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop);
 void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value);
-int RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int index);
-void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
+void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values);
+int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
+void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values);
+void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value);
 
 float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop);
 void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value);
-float RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, int index);
-void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, int index, float value);
+void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values);
+float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index);
+void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values);
+void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value);
 
 void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list