cymoca
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
condition.h
Go to the documentation of this file.
1 #ifndef CYMOCA_AST_CONDITION_CONDITION_H_
2 #define CYMOCA_AST_CONDITION_CONDITION_H_
3 
4 #include "../node.h"
5 
6 namespace cymoca::ast::condition {
7 
8 #define RELATION_MACRO(NAME) \
9  class NAME : public TBinary<expression::Base, expression::Base, Base> { \
10  NODE_MACRO \
11  using TBinary::TBinary; \
12  std::unique_ptr<INode> clone() const override { \
13  return cloneBinary<NAME>(); \
14  } \
15  };
16 
21 
22 
26 
31 
36 
41 
46 
47 #define BINARY_COND_MACRO(NAME) \
48  class NAME : public TBinary<Base, Base, Base> { \
49  public: \
50  NODE_MACRO \
51  using TBinary::TBinary; \
52  std::unique_ptr<INode> clone() const override { \
53  return cloneBinary<NAME>(); \
54  } \
55  };
56 
61 
62 
66 
67 #define UNARY_COND_MACRO(NAME) \
68  class NAME : public TUnary<Base, Base> { \
69  public: \
70  NODE_MACRO \
71  using TUnary::TUnary; \
72  std::unique_ptr<INode> clone() const override { \
73  return cloneUnary<NAME>(); \
74  } \
75  };
76 
81 
82 
85 class Boolean : public Base {
86  protected:
87  bool m_value;
88 
89  public:
91  explicit Boolean(bool value) : m_value(value) {}
92  bool getValue() const { return m_value; }
93  void setValue(bool value) { m_value = value; }
94  std::vector<INode *> getChildren() override { return {}; }
95  std::unique_ptr<INode> clone() const override {
96  return std::make_unique<Boolean>(m_value);
97  }
98 };
99 
100 } // namespace cymoca::ast::condition
101 
102 #endif
#define RELATION_MACRO(NAME)
Definition: condition.h:8
#define BINARY_COND_MACRO(NAME)
Definition: condition.h:47
std::unique_ptr< INode > clone() const override
Definition: condition.h:95
#define NODE_MACRO
Definition: node.h:15
void setValue(bool value)
Definition: condition.h:93
#define UNARY_COND_MACRO(NAME)
Definition: condition.h:67
std::vector< INode * > getChildren() override
Definition: condition.h:94