From: Juerg Billeter Date: Sat, 3 Nov 2007 22:42:43 +0000 (+0000) Subject: use defines for public constants X-Git-Tag: VALA_0_1_5~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8b48ec9ac550c5ae6183dfebd35ebd91aa58e147;p=thirdparty%2Fvala.git use defines for public constants 2007-11-03 Juerg Billeter * gobject/valaccodegenerator.vala, ccode/valaccodemacroreplacement.vala: use defines for public constants svn path=/trunk/; revision=677 --- diff --git a/ChangeLog b/ChangeLog index 14508d46e..439978ead 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-11-03 Jürg Billeter + + * gobject/valaccodegenerator.vala, ccode/valaccodemacroreplacement.vala: + use defines for public constants + 2007-11-03 Jürg Billeter * gobject/valaccodegeneratorsourcefile.vala: avoid void pointer diff --git a/ccode/valaccodemacroreplacement.vala b/ccode/valaccodemacroreplacement.vala index 1d117b137..744f71136 100644 --- a/ccode/valaccodemacroreplacement.vala +++ b/ccode/valaccodemacroreplacement.vala @@ -1,6 +1,6 @@ /* valaccodemacroreplacement.vala * - * Copyright (C) 2006 Jürg Billeter + * Copyright (C) 2006-2007 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 @@ -30,23 +30,33 @@ public class Vala.CCodeMacroReplacement : CCodeNode { * The name of this macro. */ public string! name { get; set construct; } - + /** * The replacement of this macro. */ - public string! replacement { get; set construct; } - - public CCodeMacroReplacement (string! n, string! replace) { - name = n; - replacement = replace; + public string! replacement { get; set; } + + /** + * The replacement expression of this macro. + */ + public CCodeExpression replacement_expression { get; set; } + + public CCodeMacroReplacement (construct string! name, construct string! replacement) { + } + + public CCodeMacroReplacement.with_expression (construct string! name, construct CCodeExpression! replacement_expression) { } - + public override void write (CCodeWriter! writer) { writer.write_indent (); writer.write_string ("#define "); writer.write_string (name); writer.write_string (" "); - writer.write_string (replacement); + if (replacement != null) { + writer.write_string (replacement); + } else { + replacement_expression.write (writer); + } writer.write_newline (); } } diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 147086bd7..d7074fe8e 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -386,18 +386,24 @@ public class Vala.CCodeGenerator : CodeGenerator { if (c.parent_symbol is DataType) { var t = (DataType) c.parent_symbol; - var cdecl = new CCodeDeclaration (c.type_reference.get_const_cname ()); - var arr = ""; - if (c.type_reference.data_type is Array) { - arr = "[]"; - } - cdecl.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s%s".printf (c.get_cname (), arr), (CCodeExpression) c.initializer.ccodenode)); - cdecl.modifiers = CCodeModifiers.STATIC; - if (!c.is_internal_symbol ()) { - header_type_member_declaration.append (cdecl); + if (!c.is_internal_symbol () && !(c.type_reference.data_type is Array)) { + var cdefine = new CCodeMacroReplacement.with_expression (c.get_cname (), (CCodeExpression) c.initializer.ccodenode); + header_type_member_declaration.append (cdefine); } else { - source_type_member_declaration.append (cdecl); + var cdecl = new CCodeDeclaration (c.type_reference.get_const_cname ()); + var arr = ""; + if (c.type_reference.data_type is Array) { + arr = "[]"; + } + cdecl.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s%s".printf (c.get_cname (), arr), (CCodeExpression) c.initializer.ccodenode)); + cdecl.modifiers = CCodeModifiers.STATIC; + + if (!c.is_internal_symbol ()) { + header_type_member_declaration.append (cdecl); + } else { + source_type_member_declaration.append (cdecl); + } } } }