cymoca
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
listener.h
Go to the documentation of this file.
1 #ifndef CYMOCA_AST_LISTENER_LISTENER_H_
2 #define CYMOCA_AST_LISTENER_LISTENER_H_
3 
8 namespace cymoca::ast {
9 
10 class INode;
11 
12 namespace model {
13 class Class;
14 class ElementDict;
15 } // namespace model
16 
17 namespace expression {
18 class Add;
19 class Divide;
20 class Function;
21 class List;
22 class Negative;
23 class Multiply;
24 class Number;
25 class Reference;
26 class Subtract;
27 } // namespace expression
28 
29 namespace condition {
30 class And;
31 class Boolean;
32 class Equal;
33 class GreaterThan;
34 class GreaterThanOrEqual;
35 class LessThan;
36 class LessThanOrEqual;
37 class Not;
38 class NotEqual;
39 class Or;
40 } // namespace condition
41 
42 namespace equation {
43 class Block;
44 class If;
45 class List;
46 class Simple;
47 class When;
48 } // namespace equation
49 
50 namespace statement {
51 class Block;
52 class If;
53 class List;
54 class When;
55 } // namespace statement
56 
57 namespace element {
58 class Component;
59 } // namespace element
60 
61 } // namespace cymoca::ast
62 
63 namespace cymoca::ast::listener {
64 
65 #define LISTENER_MACRO(NAME) \
66  virtual void enter(NAME *) {} \
67  virtual void exit(NAME *) {}
68 
69 class Base {
70  public:
71  virtual ~Base(){};
72  virtual void enterEvery(INode *) {}
73  virtual void exitEvery(INode *) {}
75  LISTENER_MACRO(condition::Boolean)
76  LISTENER_MACRO(condition::Equal)
77  LISTENER_MACRO(condition::GreaterThan)
78  LISTENER_MACRO(condition::GreaterThanOrEqual)
79  LISTENER_MACRO(condition::LessThan)
80  LISTENER_MACRO(condition::LessThanOrEqual)
81  LISTENER_MACRO(condition::Not)
82  LISTENER_MACRO(condition::NotEqual)
83  LISTENER_MACRO(condition::Or)
84  LISTENER_MACRO(element::Component)
85  LISTENER_MACRO(equation::Block)
86  LISTENER_MACRO(equation::If)
87  LISTENER_MACRO(equation::List)
88  LISTENER_MACRO(equation::Simple)
89  LISTENER_MACRO(equation::When)
90  LISTENER_MACRO(expression::Add)
91  LISTENER_MACRO(expression::Divide)
92  LISTENER_MACRO(expression::Function)
93  LISTENER_MACRO(expression::List)
94  LISTENER_MACRO(expression::Multiply)
95  LISTENER_MACRO(expression::Negative)
96  LISTENER_MACRO(expression::Number)
97  LISTENER_MACRO(expression::Reference)
98  LISTENER_MACRO(expression::Subtract)
99  LISTENER_MACRO(model::Class)
100  LISTENER_MACRO(model::ElementDict)
101  LISTENER_MACRO(statement::Block)
102  LISTENER_MACRO(statement::If)
103  LISTENER_MACRO(statement::List)
104  LISTENER_MACRO(statement::When)
105 };
106 
107 } // namespace cymoca::ast::listener
108 
109 #endif
virtual void exitEvery(INode *)
Definition: listener.h:73
#define LISTENER_MACRO(NAME)
Definition: listener.h:65
virtual void enterEvery(INode *)
Definition: listener.h:72