[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51822] trunk/blender: RNA C++: fixes for lookup_int/lookup_string which were not working in some cases,

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Nov 2 14:36:21 CET 2012


Revision: 51822
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51822
Author:   blendix
Date:     2012-11-02 13:36:20 +0000 (Fri, 02 Nov 2012)
Log Message:
-----------
RNA C++: fixes for lookup_int/lookup_string which were not working in some cases,
and don't use ReportList for function arguments.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_util.h
    trunk/blender/source/blender/makesrna/intern/makesrna.c

Modified: trunk/blender/intern/cycles/blender/blender_util.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_util.h	2012-11-02 13:36:10 UTC (rev 51821)
+++ trunk/blender/intern/cycles/blender/blender_util.h	2012-11-02 13:36:20 UTC (rev 51822)
@@ -39,7 +39,7 @@
 
 static inline BL::Mesh object_to_mesh(BL::Object self, BL::Scene scene, bool apply_modifiers, bool render)
 {
-	return self.to_mesh(NULL, scene, apply_modifiers, (render)? 2: 1);
+	return self.to_mesh(scene, apply_modifiers, (render)? 2: 1);
 }
 
 static inline void colorramp_to_array(BL::ColorRamp ramp, float4 *data, int size)
@@ -57,12 +57,12 @@
 	/* TODO: BlendData.meshes ideally should be also a subclass of BlendDataMeshes */
 	BL::BlendDataMeshes mesh_data(data.ptr);
 
-	mesh_data.remove(NULL, mesh);
+	mesh_data.remove(mesh);
 }
 
 static inline void object_create_duplilist(BL::Object self, BL::Scene scene)
 {
-	self.dupli_list_create(NULL, scene, 2);
+	self.dupli_list_create(scene, 2);
 }
 
 static inline void object_free_duplilist(BL::Object self)

Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c	2012-11-02 13:36:10 UTC (rev 51821)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c	2012-11-02 13:36:20 UTC (rev 51822)
@@ -1730,9 +1730,6 @@
 	if (func->flag & FUNC_USE_CONTEXT)
 		WRITE_PARAM("Context C");
 
-	if (func->flag & FUNC_USE_REPORTS)
-		WRITE_PARAM("void *reports");
-
 	for (dp = dfunc->cont.properties.first; dp; dp = dp->next) {
 		int type, flag, pout;
 		const char *ptrstr;
@@ -1907,7 +1904,7 @@
 		WRITE_PARAM("(::bContext *) C.ptr.data");
 
 	if (func->flag & FUNC_USE_REPORTS)
-		WRITE_PARAM("(::ReportList *) reports");
+		WRITE_PARAM("NULL");
 
 	dp = dfunc->cont.properties.first;
 	for (; dp; dp = dp->next) {
@@ -3384,20 +3381,21 @@
 "	inline static int sname##_##identifier##_lookup_int_wrap(PointerRNA *ptr, int key, PointerRNA *r_ptr) \\\n"
 "	{ \\\n"
 "		CollectionPropertyIterator iter; \\\n"
-"		int i = 0; \\\n"
+"		int i = 0, found = 0; \\\n"
 "		sname##_##identifier##_begin(&iter, ptr); \\\n"
 "		while (iter.valid) { \\\n"
 "			if (i == key) { \\\n"
 "				*r_ptr = iter.ptr; \\\n"
+"				found = 1; \\\n"
 "				break; \\\n"
 "			} \\\n"
 "			sname##_##identifier##_next(&iter); \\\n"
 "			++i; \\\n"
 "		} \\\n"
 "		sname##_##identifier##_end(&iter); \\\n"
-"		if (!iter.valid) \\\n"
+"		if (!found) \\\n"
 "			memset(r_ptr, 0, sizeof(*r_ptr)); \\\n"
-"		return iter.valid; \\\n"
+"		return found; \\\n"
 "	} \n"
 "#define COLLECTION_PROPERTY_LOOKUP_INT_TRUE(sname, identifier) \\\n"
 "	inline static int sname##_##identifier##_lookup_int_wrap(PointerRNA *ptr, int key, PointerRNA *r_ptr) \\\n"
@@ -3522,10 +3520,10 @@
 ""
 "	int length()\n"
 "	{ return Tlength(&ptr); }\n"
-"	T& operator[](int key)\n"
-"	{ PointerRNA r_ptr; Tlookup_int(&ptr, key, &r_ptr); return *(T*)r_ptr.data; }\n"
-"	T& operator[](const std::string &key)\n"
-"	{ PointerRNA r_ptr; Tlookup_string(&ptr, key.c_str(), &r_ptr); return *(T*)r_ptr.data; }\n"
+"	T operator[](int key)\n"
+"	{ PointerRNA r_ptr; Tlookup_int(&ptr, key, &r_ptr); return T(r_ptr); }\n"
+"	T operator[](const std::string &key)\n"
+"	{ PointerRNA r_ptr; Tlookup_string(&ptr, key.c_str(), &r_ptr); return T(r_ptr); }\n"
 "\n"
 "private:\n"
 "	PointerRNA ptr;\n"




More information about the Bf-blender-cvs mailing list