cymoca
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
element.h
Go to the documentation of this file.
1 #ifndef CYMOCA_AST_ELEMENT_ELEMENT_H_
2 #define CYMOCA_AST_ELEMENT_ELEMENT_H_
3 
4 #include <string>
5 #include "../expression/expression.h"
6 #include "../node.h"
7 
8 namespace cymoca::ast::element {
9 
11 
12 class Component : public Base {
13  protected:
14  std::string m_name;
15  std::unique_ptr<expression::Reference> m_type;
17 
18  public:
20  Component(std::string name, std::string type, Prefix prefix)
21  : m_name(move(name)),
22  m_type(std::make_unique<expression::Reference>(type)),
23  m_prefix(prefix) {}
24  const std::string &getName() const { return m_name; }
25  const expression::Reference &getType() const { return *m_type; }
26  const Prefix &getPrefix() const { return m_prefix; }
27  std::vector<INode *> getChildren() override { return {m_type.get()}; }
28  std::unique_ptr<INode> clone() const override {
29  return std::make_unique<Component>(getName(), getType().getName(),
30  getPrefix());
31  }
32 };
33 
34 } // namespace cymoca::ast::element
35 
36 #endif
const std::string & getName() const
Definition: element.h:24
Component(std::string name, std::string type, Prefix prefix)
Definition: element.h:20
std::vector< INode * > getChildren() override
Definition: element.h:27
const std::string & getName() const
Definition: expression.h:20
std::unique_ptr< expression::Reference > m_type
Definition: element.h:15
const Prefix & getPrefix() const
Definition: element.h:26
const expression::Reference & getType() const
Definition: element.h:25
#define NODE_MACRO
Definition: node.h:15
std::unique_ptr< INode > clone() const override
Definition: element.h:28