From cc161091a656df2bf897efd0576ea4ab359739f8 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Sat, 3 May 2008 12:04:49 +0000 Subject: [PATCH] Support custom cname for structs in InterfaceWriter 2008-05-03 Juerg Billeter * vala/valainterfacewriter.vala: * vala/valastruct.vala: Support custom cname for structs in InterfaceWriter svn path=/trunk/; revision=1338 --- ChangeLog | 7 +++++++ vala/valainterfacewriter.vala | 8 +++++++- vala/valastruct.vala | 13 +++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 54d9e14..8ef609d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-03 Jürg Billeter + + * vala/valainterfacewriter.vala: + * vala/valastruct.vala: + + Support custom cname for structs in InterfaceWriter + 2008-05-02 Jürg Billeter * vala/valastruct.vala: inherit integer_type and floating_type, diff --git a/vala/valainterfacewriter.vala b/vala/valainterfacewriter.vala index ebc79fe..2f1cf1f 100644 --- a/vala/valainterfacewriter.vala +++ b/vala/valainterfacewriter.vala @@ -188,6 +188,12 @@ public class Vala.InterfaceWriter : CodeVisitor { write_indent (); + write_string ("[CCode ("); + + if (st.get_cname () != st.get_default_cname ()) { + write_string ("cname = \"%s\", ".printf (st.get_cname ())); + } + var first = true; string cheaders; foreach (string cheader in st.get_cheader_filenames ()) { @@ -198,7 +204,7 @@ public class Vala.InterfaceWriter : CodeVisitor { cheaders = "%s,%s".printf (cheaders, cheader); } } - write_string ("[CCode (cheader_filename = \"%s\")]".printf (cheaders)); + write_string ("cheader_filename = \"%s\")]".printf (cheaders)); write_newline (); if (st.is_simple_type ()) { diff --git a/vala/valastruct.vala b/vala/valastruct.vala index 49b9a62..8b13fb9 100644 --- a/vala/valastruct.vala +++ b/vala/valastruct.vala @@ -186,11 +186,20 @@ public class Vala.Struct : Typesymbol { } if (cname == null) { - cname = "%s%s".printf (parent_symbol.get_cprefix (), name); + cname = get_default_cname (); } return cname; } - + + /** + * Returns the default name of this struct as it is used in C code. + * + * @return the name to be used in C code by default + */ + public string get_default_cname () { + return "%s%s".printf (parent_symbol.get_cprefix (), name); + } + private void set_cname (string cname) { this.cname = cname; } -- 2.7.4