1 #include <fridh/symbol.hpp>
5 executable_unit::executable_unit():
6 type(executable_unit_type::uninitialised
)
10 executable_unit::executable_unit(executable_unit
const & other
)
15 executable_unit::~executable_unit()
20 executable_unit
& executable_unit::operator=(executable_unit
const & other
)
27 void executable_unit::copy(executable_unit
const & other
)
29 #define COPY_MEMBER(type, member_type, member) \
30 case executable_unit_type::type: \
31 member = new member_type(*other.member); \
38 COPY_MEMBER(statement
, parse_tree_node
, statement_pointer
)
39 COPY_MEMBER(return_statement
, parse_tree_node
, statement_pointer
)
40 COPY_MEMBER(if_statement
, if_statement
, if_pointer
)
41 COPY_MEMBER(if_else_statement
, if_else_statement
, if_else_pointer
)
42 COPY_MEMBER(for_each_statement
, for_each_statement
, for_each_pointer
)
43 COPY_MEMBER(for_statement
, for_statement
, for_pointer
)
44 COPY_MEMBER(while_statement
, while_statement
, while_pointer
)
51 void executable_unit::destroy()
54 #define DELETE_MEMBER(type, member) \
55 case executable_unit_type::type: \
61 DELETE_MEMBER(statement
, statement_pointer
)
62 DELETE_MEMBER(return_statement
, statement_pointer
)
63 DELETE_MEMBER(if_statement
, if_pointer
)
64 DELETE_MEMBER(if_else_statement
, if_else_pointer
)
65 DELETE_MEMBER(for_each_statement
, for_each_pointer
)
66 DELETE_MEMBER(for_statement
, for_pointer
)
67 DELETE_MEMBER(while_statement
, while_pointer
)