LCOV - code coverage report
Current view: top level - ccode - valaccodeforstatement.vala (source / functions) Coverage Total Hit
Test: vala 0.57.0.253-297e8 Lines: 93.9 % 33 31
Test Date: 2024-02-21 16:21:37 Functions: - 0 0

            Line data    Source code
       1              : /* valaccodeforstatement.vala
       2              :  *
       3              :  * Copyright (C) 2006-2008  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 for iteration statement in the C code.
      27              :  */
      28         1108 : public class Vala.CCodeForStatement : CCodeStatement {
      29              :         /**
      30              :          * The loop condition.
      31              :          */
      32         1470 :         public CCodeExpression? condition { get; set; }
      33              : 
      34              :         /**
      35              :          * The loop body.
      36              :          */
      37         1470 :         public CCodeStatement body { get; set; }
      38              : 
      39          980 :         private List<CCodeExpression> initializer = new ArrayList<CCodeExpression> ();
      40          980 :         private List<CCodeExpression> iterator = new ArrayList<CCodeExpression> ();
      41              : 
      42          980 :         public CCodeForStatement (CCodeExpression? condition, CCodeStatement? body = null) {
      43          490 :                 this.condition = condition;
      44          490 :                 this.body = body;
      45              :         }
      46              : 
      47              :         /**
      48              :          * Appends the specified expression to the list of initializers.
      49              :          *
      50              :          * @param expr an initializer expression
      51              :          */
      52          453 :         public void add_initializer (CCodeExpression expr) {
      53          453 :                 initializer.add (expr);
      54              :         }
      55              : 
      56              :         /**
      57              :          * Appends the specified expression to the iterator.
      58              :          *
      59              :          * @param expr an iterator expression
      60              :          */
      61          490 :         public void add_iterator (CCodeExpression expr) {
      62          490 :                 iterator.add (expr);
      63              :         }
      64              : 
      65          488 :         public override void write (CCodeWriter writer) {
      66              :                 bool first;
      67              : 
      68          488 :                 writer.write_indent (line);
      69          488 :                 writer.write_string ("for (");
      70              : 
      71          488 :                 first = true;
      72         1390 :                 foreach (CCodeExpression init_expr in initializer) {
      73          451 :                         if (!first) {
      74            0 :                                 writer.write_string (", ");
      75              :                         } else {
      76              :                                 first = false;
      77              :                         }
      78          451 :                         if (init_expr != null) {
      79          451 :                                 init_expr.write (writer);
      80              :                         }
      81              :                 }
      82              : 
      83          488 :                 writer.write_string ("; ");
      84          488 :                 if (condition != null) {
      85          488 :                         condition.write (writer);
      86              :                 }
      87          488 :                 writer.write_string ("; ");
      88              : 
      89          488 :                 first = true;
      90         1464 :                 foreach (CCodeExpression it_expr in iterator) {
      91          488 :                         if (!first) {
      92            0 :                                 writer.write_string (", ");
      93              :                         } else {
      94              :                                 first = false;
      95              :                         }
      96          488 :                         if (it_expr != null) {
      97          488 :                                 it_expr.write (writer);
      98              :                         }
      99              :                 }
     100              : 
     101          488 :                 writer.write_string (")");
     102          488 :                 body.write (writer);
     103              :         }
     104              : }
        

Generated by: LCOV version 2.0-1