[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51835] trunk/blender/source/blender/ makesrna/intern/makesrna.c: RNA/C++: string property writing was missing.

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Nov 3 15:31:55 CET 2012


Revision: 51835
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51835
Author:   blendix
Date:     2012-11-03 14:31:55 +0000 (Sat, 03 Nov 2012)
Log Message:
-----------
RNA/C++: string property writing was missing.

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

Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c	2012-11-03 14:31:38 UTC (rev 51834)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c	2012-11-03 14:31:55 UTC (rev 51835)
@@ -1661,6 +1661,7 @@
 		case PROP_STRING:
 		{
 			fprintf(f, "\tinline std::string %s(void);", rna_safe_id(prop->identifier));
+			fprintf(f, "\tinline void %s(const std::string& value);", rna_safe_id(prop->identifier));
 			break;
 		}
 		case PROP_POINTER:
@@ -1948,23 +1949,23 @@
 		if (dp->prop->type == PROP_POINTER) {
 			pprop = (PointerPropertyRNA *) dp->prop;
 
-			fprintf(f, "\t\tPointerRNA ptr;\n");
+			fprintf(f, "\t\tPointerRNA result;\n");
 
 			if ((dp->prop->flag & PROP_RNAPTR) == 0) {
 				StructRNA *ret_srna = rna_find_struct((const char *) pprop->type);
 				fprintf(f, "\t\t::%s *retdata = ", rna_parameter_type_name(dp->prop));
 				rna_def_struct_function_call_impl_cpp(f, srna, dfunc);
 				if (ret_srna->flag & STRUCT_ID)
-					fprintf(f, "\t\tRNA_id_pointer_create((::ID *) retdata, &ptr);\n");
+					fprintf(f, "\t\tRNA_id_pointer_create((::ID *) retdata, &result);\n");
 				else
-					fprintf(f, "\t\tRNA_pointer_create(NULL, &RNA_%s, retdata, &ptr);\n", (const char *) pprop->type);
+					fprintf(f, "\t\tRNA_pointer_create((::ID *) ptr.id.data, &RNA_%s, retdata, &result);\n", (const char *) pprop->type);
 			}
 			else {
-				fprintf(f, "\t\tptr = ");
+				fprintf(f, "\t\tresult = ");
 				rna_def_struct_function_call_impl_cpp(f, srna, dfunc);
 			}
 
-			fprintf(f, "\t\treturn %s(ptr);\n", (const char *) pprop->type);
+			fprintf(f, "\t\treturn %s(result);\n", (const char *) pprop->type);
 		}
 		else {
 			fprintf(f, "\t\treturn ");
@@ -3356,6 +3357,8 @@
 "		int len= sname##_##identifier##_length(&ptr); \\\n"
 "		std::string str; str.resize(len); \\\n"
 "		sname##_##identifier##_get(&ptr, &str[0]); return str; } \\\n"
+"	inline void sname::identifier(const std::string& value) { \\\n"
+"		sname##_##identifier##_set(&ptr, value.c_str()); } \\\n"
 "\n"
 "#define POINTER_PROPERTY(type, sname, identifier) \\\n"
 "	inline type sname::identifier(void) { return type(sname##_##identifier##_get(&ptr)); }\n"




More information about the Bf-blender-cvs mailing list