retdec
name_node.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_NAME_NODE_H
8 #define RETDEC_NAME_NODE_H
9 
12 
13 namespace retdec {
14 namespace demangler {
15 namespace borland {
16 
20 class NameNode : public Node
21 {
22 public:
23  static std::shared_ptr<NameNode> create(
24  Context &context,
25  const std::string &name);
26 
27  void printLeft(std::ostream &s) const override;
28 
29 private:
30  explicit NameNode(const std::string &name);
31 
32 private:
33  std::string _name;
34 };
35 
39 class NestedNameNode : public Node
40 {
41 public:
42  static std::shared_ptr<NestedNameNode> create(
43  Context &context,
44  std::shared_ptr<Node> super,
45  std::shared_ptr<Node> name);
46 
47  void printLeft(std::ostream &s) const override;
48 
49  std::shared_ptr<Node> super();
50 
51  std::shared_ptr<Node> name();
52 
53 private:
55  std::shared_ptr<Node> super,
56  std::shared_ptr<Node> name);
57 
58 private:
59  std::shared_ptr<Node> _super;
60  std::shared_ptr<Node> _name;
61 };
62 
63 } // borland
64 } // demangler
65 } // retdec
66 
67 #endif //RETDEC_NAME_NODE_H
Storage for functions, types and names. Used for cacheing.
Definition: context.h:38
Node for representation of names.
Definition: name_node.h:21
std::string _name
Definition: name_node.h:33
static std::shared_ptr< NameNode > create(Context &context, const std::string &name)
Definition: name_node.cpp:26
NameNode(const std::string &name)
Constructor for NameNode.
Definition: name_node.cpp:19
void printLeft(std::ostream &s) const override
Prints string represention of node.
Definition: name_node.cpp:42
Node for representation of nested names.
Definition: name_node.h:40
void printLeft(std::ostream &s) const override
Prints left side of node represention.
Definition: name_node.cpp:80
std::shared_ptr< Node > super()
Definition: name_node.cpp:90
std::shared_ptr< Node > _name
Definition: name_node.h:60
std::shared_ptr< Node > _super
Definition: name_node.h:59
static std::shared_ptr< NestedNameNode > create(Context &context, std::shared_ptr< Node > super, std::shared_ptr< Node > name)
Definition: name_node.cpp:63
NestedNameNode(std::shared_ptr< Node > super, std::shared_ptr< Node > name)
Definition: name_node.cpp:52
std::shared_ptr< Node > name()
Definition: name_node.cpp:98
Base class for all nodes in AST.
Definition: node.h:22
Storage for all created nodes in borland AST.
Definition: archive_wrapper.h:19
Base class for all nodes in borland AST.