From c00d70c80b67895da701b1aa3bf866d2876946e2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Tue, 24 Apr 2007 09:32:32 +0000 Subject: [PATCH] add possibility to override default cname process callback attributes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2007-04-24 Jürg Billeter * vala/valacallback.vala: add possibility to override default cname * vala/valaattributeprocessor.vala: process callback attributes * vala/valainterfacewriter.vala: cleanup code to write identifiers svn path=/trunk/; revision=287 --- vala/ChangeLog | 6 ++++++ vala/vala/valaattributeprocessor.vala | 4 ++++ vala/vala/valacallback.vala | 26 ++++++++++++++++++++++++++ vala/vala/valainterfacewriter.vala | 20 ++++---------------- 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/vala/ChangeLog b/vala/ChangeLog index c1b0f7c..ccfa105 100644 --- a/vala/ChangeLog +++ b/vala/ChangeLog @@ -1,3 +1,9 @@ +2007-04-24 Jürg Billeter + + * vala/valacallback.vala: add possibility to override default cname + * vala/valaattributeprocessor.vala: process callback attributes + * vala/valainterfacewriter.vala: cleanup code to write identifiers + 2007-04-18 Jürg Billeter * vala/valacodegenerator.vala: use const types where appropriate, diff --git a/vala/vala/valaattributeprocessor.vala b/vala/vala/valaattributeprocessor.vala index 9d1ded9..f1fa963 100644 --- a/vala/vala/valaattributeprocessor.vala +++ b/vala/vala/valaattributeprocessor.vala @@ -68,6 +68,10 @@ public class Vala.AttributeProcessor : CodeVisitor { prop.process_attributes (); } + public override void visit_begin_callback (Callback! cb) { + cb.process_attributes (); + } + public override void visit_field (Field! f) { f.process_attributes (); } diff --git a/vala/vala/valacallback.vala b/vala/vala/valacallback.vala index e2af311..c563622 100644 --- a/vala/vala/valacallback.vala +++ b/vala/vala/valacallback.vala @@ -154,6 +154,32 @@ public class Vala.Callback : DataType { return cname; } + /** + * Sets the name of this callback as it is used in C code. + * + * @param cname the name to be used in C code + */ + public void set_cname (string cname) { + this.cname = cname; + } + + private void process_ccode_attribute (Attribute a) { + if (a.has_argument ("cname")) { + set_cname (a.get_string ("cname")); + } + } + + /** + * Process all associated attributes. + */ + public void process_attributes () { + foreach (Attribute a in attributes) { + if (a.name == "CCode") { + process_ccode_attribute (a); + } + } + } + public override bool is_reference_type () { return false; } diff --git a/vala/vala/valainterfacewriter.vala b/vala/vala/valainterfacewriter.vala index 4204ab9..dbee461 100644 --- a/vala/vala/valainterfacewriter.vala +++ b/vala/vala/valainterfacewriter.vala @@ -272,11 +272,6 @@ public class Vala.InterfaceWriter : CodeVisitor { } write_string (" "); - if (f.name == "base" || f.name == "callback" || - f.name == "flags" || f.name == "in" || - f.name == "out") { - write_string ("@"); - } write_identifier (f.name); write_string (";"); write_newline (); @@ -323,10 +318,6 @@ public class Vala.InterfaceWriter : CodeVisitor { } write_string (" "); - if (param.name == "callback" || param.name == "flags" || - param.name == "out" || param.name == "set") { - write_string ("@"); - } write_identifier (param.name); if (param.default_expression != null) { @@ -437,12 +428,6 @@ public class Vala.InterfaceWriter : CodeVisitor { } write_string (" "); - if (m.name == "class" || m.name == "construct" || - m.name == "foreach" || m.name == "get" || - m.name == "lock" || m.name == "ref" || - m.name == "set") { - write_string ("@"); - } write_identifier (m.name); } @@ -560,7 +545,10 @@ public class Vala.InterfaceWriter : CodeVisitor { } private void write_identifier (string! s) { - if (s == "namespace") { + if (s == "base" || s == "callback" || s == "class" || + s == "construct" || s == "flags" || s == "foreach" || + s == "in" || s == "interface" || s == "lock" || + s == "namespace" || s == "out" || s == "ref") { stream.putc ('@'); } write_string (s); -- 2.7.4