STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
IfThenElse.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25  * OF SUCH DAMAGE.
26  *
27  * This file is part of the lwIP TCP/IP stack.
28  *
29  * Author: Martin Hentschel <info@cl-soft.de>
30  *
31  */
32 
33 using System;
34 using System.Collections.Generic;
35 
36 namespace CCodeGeneration
37 {
38  public class ElseIf : CodeContainerBase
39  {
40  public string Condition { get; set; }
41 
42  public ElseIf()
43  {
44  }
45 
46  public ElseIf(string condition)
47  {
48  this.Condition = condition;
49  }
50 
51  public override void GenerateCode(int level, CGenerator generator)
52  {
53  if (!String.IsNullOrWhiteSpace(this.Condition))
54  {
55  generator.IndentLine(level);
56  generator.OutputStream.Write(String.Format("else if ({0})", this.Condition));
57  generator.WriteNewLine();
58  generator.IndentLine(level);
59  generator.OutputStream.Write("{");
60  generator.WriteNewLine();
61 
62  base.GenerateCode(level, generator);
63 
64  generator.IndentLine(level);
65  generator.OutputStream.Write("}");
66  generator.WriteNewLine();
67  }
68  }
69  }
70 
72  {
73  public string Condition { get; set; }
74 
75  private List<ElseIf> elseIf = new List<ElseIf>();
76  private CodeContainerBase else_ = new CodeContainerBase();
77 
78  public IfThenElse()
79  {
80  }
81 
82  public IfThenElse(string condition)
83  {
84  this.Condition = condition;
85  }
86 
87  public List<ElseIf> ElseIf
88  {
89  get { return this.elseIf; }
90  }
91 
92  public CodeContainerBase Else
93  {
94  get { return this.else_; }
95  }
96 
97  public override void GenerateCode(int level, CGenerator generator)
98  {
99  if (!String.IsNullOrWhiteSpace(this.Condition))
100  {
101  generator.IndentLine(level);
102  generator.OutputStream.Write(String.Format("if ({0})", this.Condition));
103  generator.WriteNewLine();
104  generator.IndentLine(level);
105  generator.OutputStream.Write("{");
106  generator.WriteNewLine();
107 
108  base.GenerateCode(level, generator);
109 
110  generator.IndentLine(level);
111  generator.OutputStream.Write("}");
112  generator.WriteNewLine();
113 
114  foreach (ElseIf elif in this.elseIf)
115  {
116  elif.GenerateCode(level, generator);
117  }
118 
119  if (this.else_.InnerElements.Count > 0)
120  {
121  generator.IndentLine(level);
122  generator.OutputStream.Write("else");
123  generator.WriteNewLine();
124  generator.IndentLine(level);
125  generator.OutputStream.Write("{");
126  generator.WriteNewLine();
127 
128  this.else_.GenerateCode(level, generator);
129 
130  generator.IndentLine(level);
131  generator.OutputStream.Write("}");
132  generator.WriteNewLine();
133  }
134  }
135  }
136  }
137 }
void IndentLine(int level)
Definition: CGenerator.cs:77
ElseIf(string condition)
Definition: IfThenElse.cs:46
IfThenElse(string condition)
Definition: IfThenElse.cs:82
override void GenerateCode(int level, CGenerator generator)
Definition: IfThenElse.cs:51
override void GenerateCode(int level, CGenerator generator)
Definition: IfThenElse.cs:97