Line data Source code
1 : /* valaccodefunctioncall.vala
2 : *
3 : * Copyright (C) 2006-2007 Jürg Billeter
4 : *
5 : * This library is free software; you can redistribute it and/or
6 : * modify it under the terms of the GNU Lesser General Public
7 : * License as published by the Free Software Foundation; either
8 : * version 2.1 of the License, or (at your option) any later version.
9 :
10 : * This library is distributed in the hope that it will be useful,
11 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 : * Lesser General Public License for more details.
14 :
15 : * You should have received a copy of the GNU Lesser General Public
16 : * License along with this library; if not, write to the Free Software
17 : * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 : *
19 : * Author:
20 : * Jürg Billeter <j@bitron.ch>
21 : */
22 :
23 : using GLib;
24 :
25 : /**
26 : * Represents a function call in the C code.
27 : */
28 238417 : public class Vala.CCodeFunctionCall : CCodeExpression {
29 : /**
30 : * The function to be called.
31 : */
32 270743 : public CCodeExpression? call { get; set; }
33 :
34 237532 : private List<CCodeExpression> arguments = new ArrayList<CCodeExpression> ();
35 :
36 237532 : public CCodeFunctionCall (CCodeExpression? call = null) {
37 118766 : this.call = call;
38 : }
39 :
40 : /**
41 : * Appends the specified expression to the list of arguments.
42 : *
43 : * @param expr a C code expression
44 : */
45 173621 : public void add_argument (CCodeExpression expr) {
46 173621 : arguments.add (expr);
47 : }
48 :
49 2732 : public void insert_argument (int index, CCodeExpression expr) {
50 2732 : arguments.insert (index, expr);
51 : }
52 :
53 : /**
54 : * Returns the list of arguments.
55 : *
56 : * @return list of arguments
57 : */
58 1 : public unowned List<CCodeExpression> get_arguments () {
59 1 : return arguments;
60 : }
61 :
62 89366 : public override void write (CCodeWriter writer) {
63 89366 : call.write_inner (writer);
64 89366 : writer.write_string (" (");
65 :
66 89366 : bool first = true;
67 389320 : foreach (CCodeExpression expr in arguments) {
68 149977 : if (!first) {
69 63938 : writer.write_string (", ");
70 : } else {
71 : first = false;
72 : }
73 :
74 149977 : if (expr != null) {
75 149977 : expr.write (writer);
76 : }
77 : }
78 :
79 89366 : writer.write_string (")");
80 : }
81 : }
|