1 #include <fridh/symbol.hpp>
5 symbol_tree_node::symbol_tree_node():
10 symbol_tree_node::symbol_tree_node(symbol::type type
):
16 case symbol::variable
:
17 variable_pointer
= new variable
;
20 case symbol::function
:
21 function_pointer
= new function
;
24 case symbol::class_symbol
:
25 class_pointer
= new class_type
;
30 symbol_tree_node::~symbol_tree_node()
32 for(node_children::iterator i
= children
.begin(), end
= children
.end(); i
!= end
; i
++)
37 case symbol::variable
:
38 delete variable_pointer
;
41 case symbol::function
:
42 delete function_pointer
;
45 case symbol::class_symbol
:
50 delete module_pointer
;
55 bool symbol_tree_node::exists(std::string
const & name
)
57 node_children::iterator iterator
= children
.find(name
);
58 return iterator
!= children
.end();
61 bool symbol_tree_node::find_entity(std::string
const & name
, symbol_tree_node
* & output
)
63 node_children::iterator iterator
= children
.find(name
);
64 if(iterator
== children
.end())
68 return parent
->find_entity(name
, output
);
71 output
= iterator
->second
;