[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19571] branches/blender2.5/blender/source /blender: RNA: Commit of the API patch by vekoon.

Brecht Van Lommel brecht at blender.org
Tue Apr 7 02:49:39 CEST 2009


Revision: 19571
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19571
Author:   blendix
Date:     2009-04-07 02:49:39 +0200 (Tue, 07 Apr 2009)

Log Message:
-----------
RNA: Commit of the API patch by vekoon. This adds Functions to RNA,
which can be defined to call C functions with defined parameters.

* Parameters are RNA properties, with the same types.
* Parameters are stored in a ParameterList, which is like a small
  stack with the values. This is then used to call the C function.
* Includes Python integration.

* Only one test function is part of this commit, ID.rename.
* Integration with the editors/ module is not included in this
  commit, there's some issues to be worked out for that still.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    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/SConscript
    branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt
    branches/blender2.5/blender/source/blender/makesrna/intern/SConscript
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.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_rna.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-04-07 00:15:58 UTC (rev 19570)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-04-07 00:49:39 UTC (rev 19571)
@@ -609,7 +609,7 @@
 void uiItemIntO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, int value);
 void uiItemFloatO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, float value);
 void uiItemStringO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, char *value);
-void uiItemFullO(uiLayout *layout, int slot, const char *name, int icon, char *idname, IDProperty *properties, int context);
+void uiItemFullO(uiLayout *layout, int slot, const char *name, int icon, char *idname, struct IDProperty *properties, int context);
 
 void uiItemR(uiLayout *layout, int slot, const char *name, int icon, struct PointerRNA *ptr, char *propname);
 void uiItemFullR(uiLayout *layout, int slot, const char *name, int icon, struct PointerRNA *ptr, char *propname, int index);

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-04-07 00:15:58 UTC (rev 19570)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-04-07 00:49:39 UTC (rev 19571)
@@ -25,6 +25,8 @@
 #ifndef RNA_ACCESS
 #define RNA_ACCESS
 
+#include <stdarg.h>
+
 #include "DNA_listBase.h"
 #include "RNA_types.h"
 
@@ -47,6 +49,7 @@
 extern StructRNA RNA_AlwaysSensor;
 extern StructRNA RNA_AndController;
 extern StructRNA RNA_AnimData;
+extern StructRNA RNA_AnyType;
 extern StructRNA RNA_Area;
 extern StructRNA RNA_AreaLamp;
 extern StructRNA RNA_Armature;
@@ -100,6 +103,7 @@
 extern StructRNA RNA_FluidFluidSettings;
 extern StructRNA RNA_FluidSettings;
 extern StructRNA RNA_FluidSimulationModifier;
+extern StructRNA RNA_Function;
 extern StructRNA RNA_GameBooleanProperty;
 extern StructRNA RNA_GameFloatProperty;
 extern StructRNA RNA_GameIntProperty;
@@ -312,9 +316,15 @@
 int RNA_struct_is_ID(PointerRNA *ptr);
 int RNA_struct_is_a(PointerRNA *ptr, StructRNA *srna);
 
+void *RNA_struct_py_type_get(StructRNA *srna);
+void RNA_struct_py_type_set(StructRNA *srna, void *py_type);
+
 PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier);
 const struct ListBase *RNA_struct_defined_properties(StructRNA *srna);
 
+FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier);
+const struct ListBase *RNA_struct_defined_functions(StructRNA *srna);
+
 /* Properties
  *
  * Access to struct properties. All this works with RNA pointers rather than
@@ -490,6 +500,39 @@
 /* python compatible string representation of this property, (must be freed!) */
 char *RNA_property_as_string(PointerRNA *ptr, PropertyRNA *prop);
 
+/* Function */
+
+const char *RNA_function_identifier(PointerRNA *ptr, FunctionRNA *func);
+PropertyRNA *RNA_function_return(PointerRNA *ptr, FunctionRNA *func);
+const char *RNA_function_ui_description(PointerRNA *ptr, FunctionRNA *func);
+
+PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index);
+PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier);
+const struct ListBase *RNA_function_defined_parameters(PointerRNA *ptr, FunctionRNA *func);
+
+/* Utility */
+
+ParameterList *RNA_parameter_list_create(PointerRNA *ptr, FunctionRNA *func);
+void RNA_parameter_list_free(ParameterList *parms);
+
+void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter);
+void RNA_parameter_list_next(ParameterIterator *iter);
+void RNA_parameter_list_end(ParameterIterator *iter);
+
+void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value);
+void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value);
+void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, void *value);
+void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, void *value);
+
+int RNA_function_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *parms);
+int RNA_function_call_lookup(PointerRNA *ptr, const char *identifier, ParameterList *parms);
+
+/* not implemented yet
+int RNA_function_call_direct(PointerRNA *ptr, FunctionRNA *func, const char *format, ...);
+int RNA_function_call_direct_lookup(PointerRNA *ptr, const char *identifier, const char *format, ...);
+int RNA_function_call_direct_va(PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args);
+int RNA_function_call_direct_va_lookup(PointerRNA *ptr, const char *identifier, const char *format, va_list args);*/
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-04-07 00:15:58 UTC (rev 19570)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-04-07 00:49:39 UTC (rev 19571)
@@ -60,54 +60,46 @@
 
 /* Compact Property Definitions */
 
-PropertyRNA *RNA_def_boolean(StructRNA *srna, const char *identifier, int default_value,
-	const char *ui_name, const char *ui_description);
-PropertyRNA *RNA_def_boolean_array(StructRNA *srna, const char *identifier, int len, int *default_value,
-	const char *ui_name, const char *ui_description);
-PropertyRNA *RNA_def_boolean_vector(StructRNA *srna, const char *identifier, int len, int *default_value,
-	const char *ui_name, const char *ui_description);
+typedef void StructOrFunctionRNA;
 
-PropertyRNA *RNA_def_int(StructRNA *srna, const char *identifier, int default_value, int hardmin, int hardmax,
-	const char *ui_name, const char *ui_description, int softmin, int softmax);
-PropertyRNA *RNA_def_int_vector(StructRNA *srna, const char *identifier, int len, const int *default_value, int hardmin, int hardmax,
-	const char *ui_name, const char *ui_description, int softmin, int softmax);
-PropertyRNA *RNA_def_int_array(StructRNA *srna, const char *identifier, int len, const int *default_value, int hardmin, int hardmax,
-	const char *ui_name, const char *ui_description, int softmin, int softmax);
+PropertyRNA *RNA_def_boolean(StructOrFunctionRNA *cont, const char *identifier, int default_value, const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_boolean_array(StructOrFunctionRNA *cont, const char *identifier, int len, int *default_value, const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_boolean_vector(StructOrFunctionRNA *cont, const char *identifier, int len, int *default_value, const char *ui_name, const char *ui_description);
 
-PropertyRNA *RNA_def_string(StructRNA *srna, const char *identifier, const char *default_value, int maxlen,
-	const char *ui_name, const char *ui_description);
-PropertyRNA *RNA_def_string_file_path(StructRNA *srna, const char *identifier, const char *default_value, int maxlen,
-	const char *ui_name, const char *ui_description);
-PropertyRNA *RNA_def_string_dir_path(StructRNA *srna, const char *identifier, const char *default_value, int maxlen,
-	const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_int(StructOrFunctionRNA *cont, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax);
+PropertyRNA *RNA_def_int_vector(StructOrFunctionRNA *cont, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax);
+PropertyRNA *RNA_def_int_array(StructOrFunctionRNA *cont, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax);
 
-PropertyRNA *RNA_def_enum(StructRNA *srna, const char *identifier, EnumPropertyItem *items, int default_value,
-	const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_string(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_string_file_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_string_dir_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
 
-PropertyRNA *RNA_def_float(StructRNA *srna, const char *identifier, float default_value, float hardmin, float hardmax,
-	const char *ui_name, const char *ui_description, float softmin, float softmax);
-PropertyRNA *RNA_def_float_vector(StructRNA *srna, const char *identifier, int len, const float *default_value,
+PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont, const char *identifier, EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description);
+
+PropertyRNA *RNA_def_float(StructOrFunctionRNA *cont, const char *identifier, float default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
+PropertyRNA *RNA_def_float_vector(StructOrFunctionRNA *cont, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
+PropertyRNA *RNA_def_float_color(StructOrFunctionRNA *cont, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
+PropertyRNA *RNA_def_float_matrix(StructOrFunctionRNA *cont, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
+PropertyRNA *RNA_def_float_rotation(StructOrFunctionRNA *cont, const char *identifier, int len, const float *default_value,

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list