vala r1577 - in trunk: . gobject



Author: juergbi
Date: Fri Jun 13 16:40:33 2008
New Revision: 1577
URL: http://svn.gnome.org/viewvc/vala?rev=1577&view=rev

Log:
2008-06-13  JÃrg Billeter  <j bitron ch>

	* gobject/valaccodegenerator.vala:

	Support object creation expressions for simple types


Modified:
   trunk/ChangeLog
   trunk/gobject/valaccodegenerator.vala

Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala	(original)
+++ trunk/gobject/valaccodegenerator.vala	Fri Jun 13 16:40:33 2008
@@ -2991,7 +2991,8 @@
 		CCodeExpression instance = null;
 		CCodeFunctionCall creation_call = null;
 
-		if (expr.type_reference.data_type is Struct || expr.get_object_initializer ().size > 0) {
+		var st = expr.type_reference.data_type as Struct;
+		if ((st != null && !st.is_simple_type ()) || expr.get_object_initializer ().size > 0) {
 			// value-type initialization or object creation expression with object initializer
 			var temp_decl = get_temp_variable (expr.type_reference, false, expr);
 			temp_vars.add (temp_decl);
@@ -3028,7 +3029,7 @@
 
 			creation_call = new CCodeFunctionCall (new CCodeIdentifier (m.get_cname ()));
 
-			if (expr.type_reference.data_type is Struct && !(m.cinstance_parameter_position < 0)) {
+			if ((st != null && !st.is_simple_type ()) && !(m.cinstance_parameter_position < 0)) {
 				creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance));
 			}
 
@@ -3120,7 +3121,7 @@
 				i++;
 			}
 
-			if (expr.type_reference.data_type is Struct && m.cinstance_parameter_position < 0) {
+			if ((st != null && !st.is_simple_type ()) && m.cinstance_parameter_position < 0) {
 				// instance parameter is at the end in a struct creation method
 				creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance));
 			}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]