From: Juerg Billeter Date: Tue, 8 Jan 2008 17:26:45 +0000 (+0000) Subject: support simple_type attribute in metadata X-Git-Tag: VALA_0_1_6~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a14ff8d0bb67d6f14a2d0b976beb5ea135e511f;p=thirdparty%2Fvala.git support simple_type attribute in metadata 2008-01-08 Juerg Billeter * vala/valainterfacewriter.vala, vala/valastruct.vala, vapigen/valagidlparser.vala: support simple_type attribute in metadata * vapi/packages/gdk-2.0/gdk-2.0.metadata: mark GdkAtom as simple type * vapi/gdk-2.0.vapi: regenerated svn path=/trunk/; revision=808 --- diff --git a/ChangeLog b/ChangeLog index 68106ab64..41d77d622 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-01-08 Jürg Billeter + + * vala/valainterfacewriter.vala, vala/valastruct.vala, + vapigen/valagidlparser.vala: support simple_type attribute in metadata + + * vapi/packages/gdk-2.0/gdk-2.0.metadata: mark GdkAtom as simple type + + * vapi/gdk-2.0.vapi: regenerated + 2008-01-08 Jürg Billeter * vapi/packages/gtk+-2.0/: fix GtkTreeViewDropPosition out parameters diff --git a/vala/valainterfacewriter.vala b/vala/valainterfacewriter.vala index 818dec1a1..0404f1e59 100644 --- a/vala/valainterfacewriter.vala +++ b/vala/valainterfacewriter.vala @@ -1,6 +1,6 @@ /* valainterfacewriter.vala * - * Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini + * Copyright (C) 2006-2008 Jürg Billeter, Raffaele Sandrini * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -201,6 +201,12 @@ public class Vala.InterfaceWriter : CodeVisitor { write_string ("[CCode (cheader_filename = \"%s\")]".printf (cheaders)); write_newline (); + if (st.is_simple_type ()) { + write_indent (); + write_string ("[SimpleType]"); + write_newline (); + } + write_indent (); write_accessibility (st); write_string ("struct "); diff --git a/vala/valastruct.vala b/vala/valastruct.vala index c5c3217ca..036d18205 100644 --- a/vala/valastruct.vala +++ b/vala/valastruct.vala @@ -1,6 +1,6 @@ /* valastruct.vala * - * Copyright (C) 2006-2007 Jürg Billeter + * Copyright (C) 2006-2008 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -402,6 +402,14 @@ public class Vala.Struct : Typesymbol { return simple_type; } + /** + * Marks this struct as simple type, i.e. instances will be passed by + * value. + */ + public void set_simple_type (bool simple_type) { + this.simple_type = simple_type; + } + public override void replace_type (DataType! old_type, DataType! new_type) { for (int i = 0; i < base_types.size; i++) { if (base_types[i] == old_type) { diff --git a/vapi/gdk-2.0.vapi b/vapi/gdk-2.0.vapi index ea47e5489..4c4970512 100644 --- a/vapi/gdk-2.0.vapi +++ b/vapi/gdk-2.0.vapi @@ -1603,6 +1603,7 @@ namespace Gdk { public void withdraw (); } [CCode (cheader_filename = "gdk/gdk.h")] + [SimpleType] public struct Atom { public static Gdk.Atom intern (string atom_name, bool only_if_exists); public static Gdk.Atom intern_static_string (string atom_name); diff --git a/vapi/packages/gdk-2.0/gdk-2.0.metadata b/vapi/packages/gdk-2.0/gdk-2.0.metadata index bef14f3aa..78436efdb 100644 --- a/vapi/packages/gdk-2.0/gdk-2.0.metadata +++ b/vapi/packages/gdk-2.0/gdk-2.0.metadata @@ -1,5 +1,5 @@ Gdk cheader_filename="gdk/gdk.h" -GdkAtom is_value_type="1" +GdkAtom is_value_type="1" simple_type="1" gdk_cairo_create transfer_ownership="1" GdkColor is_value_type="1" gdk_color_parse.color is_out="1" diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 57dcde3f2..764e0990d 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -336,6 +336,10 @@ public class Vala.GIdlParser : CodeVisitor { if (eval (nv[1]) == "1") { return; } + } else if (nv[0] == "simple_type") { + if (eval (nv[1]) == "1") { + st.set_simple_type (true); + } } } }