MicroModelicaCCompiler  4.5.3
composition.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_COMPOSITION_H_
21 #define AST_COMPOSITION_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 
31 
32 using namespace std;
33 
34 class AST_Composition_ : public AST_Node_ {
35  public:
36  AST_Composition_(AST_ElementList el, AST_CompositionElementList cl);
37  DEFINE_CLASS_PRINTER(AST_Composition);
38  AST_CompositionElementList compositionList() const;
39  bool hasCompositionList();
40  AST_ElementList elementList() const;
41  bool hasElementList();
42  void setExternalFunctionCall(AST_External_Function_Call);
43  AST_External_Function_Call externalCall() const;
44  bool hasExternalFunctionCall();
45  void setAnnotation(AST_ArgumentList);
46  bool hasAnnotation();
47  void accept(AST_Visitor *visitor);
48 
49  private:
50  AST_CompositionElementList _composition_list;
51  AST_ElementList _element_list;
52  AST_ArgumentList _annot;
53  AST_External_Function_Call _ext;
54 };
55 
57  public:
58  AST_CompositionElement_(AST_CompositionEqsAlgs eqs_algs);
59  AST_CompositionElement_(AST_ElementList el);
60  DEFINE_CLASS_PRINTER(AST_CompositionElement);
61  AST_CompositionEqsAlgs getEquationsAlgs();
62  AST_ElementList getElementList();
63  bool hasEquations();
64  bool hasStatements();
65  bool hasElements();
66  void accept(AST_Visitor *visitor);
67 
68  private:
69  AST_CompositionEqsAlgs _eqs_algs;
70  AST_ElementList _el;
71 };
72 
74  public:
75  AST_CompositionEqsAlgs_(AST_EquationList eq);
76  AST_CompositionEqsAlgs_(AST_StatementList st);
77  AST_CompositionEqsAlgs_(AST_StatementList st, bool initial);
78  AST_CompositionEqsAlgs_(AST_EquationList eq, bool initial);
79  AST_EquationList getEquations();
80  AST_StatementList getAlgorithms();
81  bool isInitial();
82  bool hasEquations();
83  bool hasStatements();
84  void accept(AST_Visitor *visitor);
85 
86  private:
87  bool _initial;
88  AST_EquationList _eq;
89  AST_StatementList _st;
90 };
91 
93  public:
94  AST_External_Function_Call_(AST_String, AST_Expression_ComponentReference, AST_Expression, AST_ArgumentList);
95  AST_String language();
96  string languageString();
97  AST_ArgumentList annotation();
98  AST_ExpressionList args();
99  string name();
100  AST_Expression exp();
101  AST_Expression_ComponentReference componentReference();
102  bool hasComponentReference();
103  void accept(AST_Visitor *visitor);
104 
105  private:
107  AST_ArgumentList _annot;
108  AST_Expression_Call _call;
109  AST_Expression _exp;
110  AST_Expression_ComponentReference _cr;
111 };
112 
113 #endif /* AST_COMPOSITION_H_ */
AST_CompositionEqsAlgs_::_initial
bool _initial
Definition: composition.hpp:87
AST_External_Function_Call_::_annot
AST_ArgumentList _annot
Definition: composition.hpp:107
AST_Composition_::_annot
AST_ArgumentList _annot
Definition: composition.hpp:52
AST_External_Function_Call_
Definition: composition.hpp:92
AST_External_Function_Call_::_call
AST_Expression_Call _call
Definition: composition.hpp:108
AST_String
string * AST_String
Definition: ast_types.hpp:46
AST_CompositionElement_::_eqs_algs
AST_CompositionEqsAlgs _eqs_algs
Definition: composition.hpp:69
AST_CompositionEqsAlgs_::_eq
AST_EquationList _eq
Definition: composition.hpp:88
AST_Composition_::_ext
AST_External_Function_Call _ext
Definition: composition.hpp:53
AST_CompositionElement_
Definition: composition.hpp:56
AST_Node_
Definition: ast_node.hpp:29
AST_Composition_::_element_list
AST_ElementList _element_list
Definition: composition.hpp:51
AST_External_Function_Call_::_exp
AST_Expression _exp
Definition: composition.hpp:109
ast_node.hpp
AST_CompositionEqsAlgs_
Definition: composition.hpp:73
AST_CompositionEqsAlgs_::_st
AST_StatementList _st
Definition: composition.hpp:89
DEFINE_CLASS_PRINTER
#define DEFINE_CLASS_PRINTER(X)
Definition: macros.hpp:39
ast_types.hpp
AST_CompositionElement_::_el
AST_ElementList _el
Definition: composition.hpp:70
AST_Visitor
Definition: ast_util.hpp:224
AST_External_Function_Call_::_cr
AST_Expression_ComponentReference _cr
Definition: composition.hpp:110
AST_Composition_::_composition_list
AST_CompositionElementList _composition_list
Definition: composition.hpp:50
AST_External_Function_Call_::_lang
AST_String _lang
Definition: composition.hpp:106
AST_Composition_
Definition: composition.hpp:34