1 #include <fridh/symbol_tree_node.hpp>
2 #include <boost/foreach.hpp>
6 symbol_tree_node::symbol_tree_node():
11 symbol_tree_node::symbol_tree_node(symbol::type type
):
17 case variable::variable
:
18 variable_pointer
= new variable
;
21 case variable::function
:
22 function_pointer
= new function
;
25 case variable::class_symbol
:
26 class_pointer
= new class_type
;
31 symbol_tree_node::~symbol_tree_node()
33 BOOST_FOREACH(symbol_tree_node
* i
, children
)
38 case variable::variable
:
39 delete variable_pointer
;
42 case variable::function
:
43 delete function_pointer
;
46 case variable::class_symbol
:
50 case variable::module
:
51 delete module_pointer
;
56 bool symbol_tree_node::exists(std::string
const & name
)
58 node_children::iterator iterator
= children
.find(name
);
59 return iterator
!= children
.end();
62 bool symbol_tree_node::find_entity(std::string
const & name
, symbol_tree_node
* & output
)
64 node_children::iterator iterator
= children
.find(name
);
65 if(iterator
== children
.end())
69 return parent
->find_entity(name
, output
);
72 output
= &iterator
->second
;