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. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to