1 /* valaccodeifsection.vala
3 * Copyright (C) 2013 Jürg Billeter
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.
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.
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
20 * Marc-André Lurau <marcandre.lureau@redhat.com>
26 * Represents a section that should be processed on condition.
28 public class Vala.CCodeIfSection : CCodeFragment {
30 * The conditional expression, or null if there is no condition.
32 public string? expression { get; set; }
34 CCodeIfSection? else_section;
37 public CCodeIfSection (string? expr) {
39 is_else_section = false;
42 public unowned CCodeIfSection append_else (string? expr = null) {
43 else_section = new CCodeIfSection (expr);
44 else_section.is_else_section = true;
48 public override void write (CCodeWriter writer) {
49 if (is_else_section) {
50 if (expression != null) {
51 writer.write_string ("#elif ");
52 writer.write_string (expression);
54 writer.write_string ("#else");
56 } else if (expression != null) {
57 writer.write_string ("#if ");
58 writer.write_string (expression);
60 writer.write_newline ();
61 foreach (CCodeNode node in get_children ()) {
62 node.write_combined (writer);
64 if (else_section != null) {
65 else_section.write_combined (writer);
67 writer.write_string ("#endif");
68 writer.write_newline ();
72 public override void write_declaration (CCodeWriter writer) {
75 public override void write_combined (CCodeWriter writer) {