MicroModelicaCCompiler  4.5.3
modification.hpp
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  This file is part of QSS Solver.
4 
5  QSS Solver is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  QSS Solver 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
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QSS Solver. If not, see <http://www.gnu.org/licenses/>.
17 
18  ******************************************************************************/
19 
20 #ifndef AST_MODIFICATION_H_
21 #define AST_MODIFICATION_H_
22 
23 #include <string>
24 
25 #include "../util/macros.hpp"
26 #include "../util/util_types.hpp"
27 #include "ast_node.hpp"
28 #include "ast_types.hpp"
29 
33 class AST_Argument_ : public AST_Node_ {
34  public:
38  DEFINE_CLASS_PRINTER(AST_Argument);
42  AST_Argument_();
47  virtual string print() const = 0;
52  virtual ArgumentType argumentType() const = 0;
56  void setFinal();
60  void setEach();
65  bool isFinal() const;
70  bool hasEach() const;
75  void accept(AST_Visitor *visitor);
79  GET_AS(Argument, Modification);
83  GET_AS(Argument, Redeclaration);
84 
85  private:
86  bool _final;
87  bool _each;
88 };
89 
94  public:
100  AST_Argument_Modification_(AST_String name, AST_Modification m);
105  AST_String name() const;
110  AST_Modification modification() const;
115  bool hasModification();
120  string print() const;
125  ArgumentType argumentType() const;
126 
127  private:
129  AST_Modification _mod;
130 };
131 
144  string print() const;
145  ArgumentType argumentType() const;
146 };
147 
151 class AST_Modification_ : public AST_Node_ {
152  public:
156  DEFINE_CLASS_PRINTER(AST_Modification);
166  virtual string print() const = 0;
171  void accept(AST_Visitor *visitor);
175  GET_AS(Modification, Equal);
179  GET_AS(Modification, Class);
183  GET_AS(Modification, Assign);
184 };
185 
190  public:
195  AST_Modification_Equal_(AST_Expression e);
200  AST_Expression exp();
205  string print() const;
211 
212  private:
213  AST_Expression _e;
214 };
215 
220  public:
225  AST_Modification_Assign_(AST_Expression e);
230  AST_Expression exp();
235  string print() const;
241 
242  private:
243  AST_Expression _e;
244 };
245 
250  public:
256  AST_Modification_Class_(AST_ArgumentList al, AST_Expression e);
261  AST_Expression exp() const;
266  bool hasExpression();
271  AST_ArgumentList arguments() const;
276  string print() const;
281  void setArguments(AST_ArgumentList al);
287 
288  private:
289  AST_Expression _e;
290  AST_ArgumentList _al;
291 };
292 
293 #endif /* AST_MODIFICATION_H_ */
ModificationType
ModificationType
Definition: ast_types.hpp:189
AST_Modification_Class_::arguments
AST_ArgumentList arguments() const
Definition: modification.cpp:98
AST_Argument_Modification_::print
string print() const
Definition: modification.cpp:118
AST_Modification_Class_::setArguments
void setArguments(AST_ArgumentList al)
Definition: modification.cpp:100
AST_Modification_Assign_::AST_Modification_Assign_
AST_Modification_Assign_(AST_Expression e)
Definition: modification.cpp:77
AST_Argument_::_final
bool _final
Definition: modification.hpp:103
AST_Argument_Modification_::_name
AST_String _name
Definition: modification.hpp:128
AST_Argument_::GET_AS
GET_AS(Argument, Modification)
AST_Argument_Redeclaration_::print
string print() const
Definition: modification.cpp:144
AST_Modification_Equal_::modificationType
virtual ModificationType modificationType()
Definition: modification.cpp:73
AST_Argument_Modification_::AST_Argument_Modification_
AST_Argument_Modification_(AST_String name, AST_Modification m)
Definition: modification.cpp:116
AST_Modification_Assign_::_e
AST_Expression _e
Definition: modification.hpp:243
AST_Modification_Class_
Definition: modification.hpp:249
AST_Modification_Class_::hasExpression
bool hasExpression()
Definition: modification.cpp:112
AST_Argument_Modification_::name
AST_String name() const
Definition: modification.cpp:132
AST_Modification_Class_::_al
AST_ArgumentList _al
Definition: modification.hpp:290
AST_Modification_Class_::exp
AST_Expression exp() const
Definition: modification.cpp:96
AST_Argument_
Definition: modification.hpp:33
AST_Argument_::AST_Argument_
AST_Argument_()
Definition: modification.cpp:30
AST_String
string * AST_String
Definition: ast_types.hpp:46
AST_Argument_Redeclaration_
Definition: modification.hpp:135
AST_Argument_Modification_::argumentType
ArgumentType argumentType() const
Definition: modification.cpp:136
AST_Argument_::hasEach
bool hasEach() const
Definition: modification.cpp:36
AST_Modification_Class_::modificationType
virtual ModificationType modificationType()
Definition: modification.cpp:94
AST_Modification_
Definition: modification.hpp:151
AST_Argument_Modification_
Definition: modification.hpp:93
ArgumentType
ArgumentType
Definition: ast_types.hpp:206
AST_Modification_Assign_
Definition: modification.hpp:219
AST_Argument_Redeclaration_::AST_Argument_Redeclaration_
AST_Argument_Redeclaration_()
Definition: modification.cpp:142
AST_Modification_Assign_::modificationType
virtual ModificationType modificationType()
Definition: modification.cpp:81
AST_Argument_::setFinal
void setFinal()
Definition: modification.cpp:32
AST_Node_
Definition: ast_node.hpp:29
AST_Modification_::print
virtual string print() const =0
AST_Modification_Assign_::print
string print() const
Definition: modification.cpp:83
AST_Modification_Equal_::print
string print() const
Definition: modification.cpp:64
AST_Modification_Class_::_e
AST_Expression _e
Definition: modification.hpp:289
AST_Modification_::modificationType
virtual ModificationType modificationType()
Definition: modification.cpp:47
AST_Argument_::_each
bool _each
Definition: modification.hpp:104
AST_Argument_Modification_::_mod
AST_Modification _mod
Definition: modification.hpp:129
ast_node.hpp
AST_Modification_Equal_::_e
AST_Expression _e
Definition: modification.hpp:213
AST_Modification_Class_::print
string print() const
Definition: modification.cpp:102
AST_Argument_::isFinal
bool isFinal() const
Definition: modification.cpp:38
AST_Argument_::DEFINE_CLASS_PRINTER
DEFINE_CLASS_PRINTER(AST_Argument)
AST_Modification_::GET_AS
GET_AS(Modification, Equal)
AST_Modification_::accept
void accept(AST_Visitor *visitor)
Definition: modification.cpp:49
AST_Modification_Equal_::exp
AST_Expression exp()
Definition: modification.cpp:71
AST_Argument_::argumentType
virtual ArgumentType argumentType() const =0
ast_types.hpp
AST_Argument_Modification_::hasModification
bool hasModification()
Definition: modification.cpp:138
AST_Argument_::print
virtual string print() const =0
AST_Argument_::accept
void accept(AST_Visitor *visitor)
Definition: modification.cpp:40
AST_Modification_Class_::AST_Modification_Class_
AST_Modification_Class_(AST_ArgumentList al, AST_Expression e)
Definition: modification.cpp:92
AST_Visitor
Definition: ast_util.hpp:224
AST_Argument_Modification_::modification
AST_Modification modification() const
Definition: modification.cpp:134
AST_Modification_Assign_::exp
AST_Expression exp()
Definition: modification.cpp:79
AST_Argument_Redeclaration_::argumentType
ArgumentType argumentType() const
Definition: modification.cpp:146
AST_Argument_::setEach
void setEach()
Definition: modification.cpp:34
AST_Modification_::DEFINE_CLASS_PRINTER
DEFINE_CLASS_PRINTER(AST_Modification)
AST_Modification_Equal_
Definition: modification.hpp:189
AST_Modification_Equal_::AST_Modification_Equal_
AST_Modification_Equal_(AST_Expression e)
Definition: modification.cpp:62