summaryrefslogtreecommitdiff
path: root/ccode
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2022-01-26 19:34:06 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2022-01-26 20:02:48 +0100
commitc59ee0984d25a00c3ad0f80dbad97e11053ed92a (patch)
treef1ce2e6244485222f46bd021119d56f681eaccfd /ccode
parentf853104ebf94ce1f72ab408dc5d5b50c81b69d51 (diff)
downloadvala-c59ee0984d25a00c3ad0f80dbad97e11053ed92a.tar.gz
codegen: Write array length of formal parameters with fixed length
"void foo (gint i[3]) { ... }" instead of "void foo (gint* i) { ... }"
Diffstat (limited to 'ccode')
-rw-r--r--ccode/valaccodeparameter.vala14
1 files changed, 13 insertions, 1 deletions
diff --git a/ccode/valaccodeparameter.vala b/ccode/valaccodeparameter.vala
index b4bc74963..8e90695a7 100644
--- a/ccode/valaccodeparameter.vala
+++ b/ccode/valaccodeparameter.vala
@@ -42,6 +42,8 @@ public class Vala.CCodeParameter : CCodeNode {
*/
public bool ellipsis { get; set; }
+ CCodeDeclarator? declarator;
+
public CCodeParameter (string n, string type) {
name = n;
type_name = type;
@@ -51,11 +53,21 @@ public class Vala.CCodeParameter : CCodeNode {
ellipsis = true;
}
+ public CCodeParameter.with_declarator (string type, CCodeDeclarator decl) {
+ name = decl.name;
+ type_name = type;
+ declarator = decl;
+ }
+
public override void write (CCodeWriter writer) {
if (!ellipsis) {
writer.write_string (type_name);
writer.write_string (" ");
- writer.write_string (name);
+ if (declarator != null) {
+ declarator.write (writer);
+ } else {
+ writer.write_string (name);
+ }
} else {
writer.write_string ("...");
}