vala r2032 - in trunk: . gobject



Author: sdroege
Date: Wed Nov 19 08:11:07 2008
New Revision: 2032
URL: http://svn.gnome.org/viewvc/vala?rev=2032&view=rev

Log:
* gobject/valagobjectmodule.vala:
Add support for class field initializers for classes that are not
derived from GObject.


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

Modified: trunk/gobject/valagobjectmodule.vala
==============================================================================
--- trunk/gobject/valagobjectmodule.vala	(original)
+++ trunk/gobject/valagobjectmodule.vala	Wed Nov 19 08:11:07 2008
@@ -767,6 +767,19 @@
 			}
 		}
 
+		/* initialize class fields */
+		var fields = cl.get_fields ();
+		foreach (Field field in fields) {
+			if (field.binding != MemberBinding.CLASS || field.initializer == null) {
+				continue;
+			}
+			CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"),
+			                                              field.get_cname (), true);
+			CCodeExpression right = (CCodeExpression)field.initializer.ccodenode;
+			CCodeAssignment assign = new CCodeAssignment (left, right);
+			init_block.add_statement (new CCodeExpressionStatement (assign));
+		}
+
 		if (cl.is_subtype_of (gobject_type)) {
 			/* create type, dup_func, and destroy_func properties for generic types */
 			foreach (TypeParameter type_param in cl.get_type_parameters ()) {
@@ -829,19 +842,6 @@
 				instance_priv_struct.add_field ("GDestroyNotify", func_name);
 			}
 
-			/* initialize class fields */
-			var fields = cl.get_fields ();
-			foreach (Field field in fields) {
-				if (field.binding != MemberBinding.CLASS || field.initializer == null) {
-					continue;
-				}
-				CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"),
-				                                              field.get_cname (), true);
-				CCodeExpression right = (CCodeExpression)field.initializer.ccodenode;
-				CCodeAssignment assign = new CCodeAssignment (left, right);
-				init_block.add_statement (new CCodeExpressionStatement (assign));
-			}
-
 			/* create properties */
 			var props = cl.get_properties ();
 			foreach (Property prop in props) {



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