vala r1710 - in trunk: . gobject vala vapi vapi/packages/gtk+-2.0 vapigen



Author: juergbi
Date: Thu Jul 17 09:40:37 2008
New Revision: 1710
URL: http://svn.gnome.org/viewvc/vala?rev=1710&view=rev

Log:
2008-07-17  JÃrg Billeter  <j bitron ch>

	* vala/valaformalparameter.vala:
	* vala/valainterfacewriter.vala:
	* gobject/valaccodeinvocationexpressionbinding.vala:

	Support [CCode (type = "Foo")] for parameters,
	based on patch by Daniel Svensson, fixes bug 543073

	* vapigen/valagidlparser.vala:

	Add support for ctype metadata attribute for parameters

	* vapi/packages/gtk+-2.0/:

	Fix gtk_menu_shell_append binding

	* vapi/gtk+-2.0.vapi: regenerated


Modified:
   trunk/ChangeLog
   trunk/gobject/valaccodeinvocationexpressionbinding.vala
   trunk/vala/valaformalparameter.vala
   trunk/vala/valainterfacewriter.vala
   trunk/vapi/gtk+-2.0.vapi
   trunk/vapi/packages/gtk+-2.0/gtk+-2.0.metadata
   trunk/vapigen/valagidlparser.vala

Modified: trunk/gobject/valaccodeinvocationexpressionbinding.vala
==============================================================================
--- trunk/gobject/valaccodeinvocationexpressionbinding.vala	(original)
+++ trunk/gobject/valaccodeinvocationexpressionbinding.vala	Thu Jul 17 09:40:37 2008
@@ -286,6 +286,10 @@
 
 						ccall_expr = ccomma;
 					}
+
+					if (param.ctype != null) {
+						cexpr = new CCodeCastExpression (cexpr, param.ctype);
+					}
 				}
 				arg_pos = codegen.get_param_pos (param.cparameter_position, ellipsis);
 			} else {

Modified: trunk/vala/valaformalparameter.vala
==============================================================================
--- trunk/vala/valaformalparameter.vala	(original)
+++ trunk/vala/valaformalparameter.vala	Thu Jul 17 09:40:37 2008
@@ -82,6 +82,11 @@
 	 */
 	public double cdelegate_target_parameter_position { get; set; }
 
+	/**
+	 * Specifies the type of the parameter in the C function.
+	 */
+	public string? ctype { get; set; }
+
 	private DataType _data_type;
 
 	/**
@@ -132,6 +137,9 @@
 	}
 
 	private void process_ccode_attribute (Attribute a) {
+		if (a.has_argument ("type")) {
+			ctype = a.get_string ("type");
+		}
 		if (a.has_argument ("array_length_pos")) {
 			carray_length_parameter_position = a.get_double ("array_length_pos");
 		}

Modified: trunk/vala/valainterfacewriter.vala
==============================================================================
--- trunk/vala/valainterfacewriter.vala	(original)
+++ trunk/vala/valainterfacewriter.vala	Thu Jul 17 09:40:37 2008
@@ -621,6 +621,10 @@
 			var ccode_params = new StringBuilder ();
 			var separator = "";
 
+			if (param.ctype != null) {
+				ccode_params.append_printf ("%stype = \"%s\"", separator, param.ctype);
+				separator = ", ";
+			}
 			if (!float_equal (param.carray_length_parameter_position, i + 0.1)) {
 				ccode_params.append_printf ("%sarray_length_pos = %g", separator, param.carray_length_parameter_position);
 				separator = ", ";

Modified: trunk/vapi/gtk+-2.0.vapi
==============================================================================
--- trunk/vapi/gtk+-2.0.vapi	(original)
+++ trunk/vapi/gtk+-2.0.vapi	Thu Jul 17 09:40:37 2008
@@ -3721,7 +3721,7 @@
 		public uint menu_flag;
 		public uint ignore_enter;
 		public void activate_item (Gtk.Widget menu_item, bool force_deactivate);
-		public void append (Gtk.MenuItem child);
+		public void append ([CCode (type = "GtkWidget*")] Gtk.MenuItem child);
 		public void deselect ();
 		public bool get_take_focus ();
 		public void prepend (Gtk.Widget child);

Modified: trunk/vapi/packages/gtk+-2.0/gtk+-2.0.metadata
==============================================================================
--- trunk/vapi/packages/gtk+-2.0/gtk+-2.0.metadata	(original)
+++ trunk/vapi/packages/gtk+-2.0/gtk+-2.0.metadata	Thu Jul 17 09:40:37 2008
@@ -174,7 +174,7 @@
 GtkMenuShell.children type_arguments="MenuItem" weak="0"
 GtkMenuShell::cancel has_emitter="1"
 GtkMenuShell::deactivate has_emitter="1"
-gtk_menu_shell_append.child type_name="MenuItem"
+gtk_menu_shell_append.child type_name="MenuItem" ctype="GtkWidget*"
 gtk_message_dialog_new ellipsis="1"
 gtk_message_dialog_new.parent nullable="1"
 gtk_message_dialog_new_with_markup ellipsis="1"

Modified: trunk/vapigen/valagidlparser.vala
==============================================================================
--- trunk/vapigen/valagidlparser.vala	(original)
+++ trunk/vapigen/valagidlparser.vala	Thu Jul 17 09:40:37 2008
@@ -1474,6 +1474,8 @@
 						delegate_target_pos = eval (nv[1]).to_double ();
 					} else if (nv[0] == "type_name") {
 						((UnresolvedType) param_type).unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1]));
+					} else if (nv[0] == "ctype") {
+						p.ctype = eval (nv[1]);
 					} else if (nv[0] == "type_arguments") {
 						var type_args = eval (nv[1]).split (",");
 						foreach (string type_arg in type_args) {



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