#include "elna/gcc/elna-tree.h" #include "stor-layout.h" tree elna_global_trees[ELNA_TI_MAX]; namespace elna { namespace gcc { void init_ttree() { elna_char_type_node = make_unsigned_type(8); elna_string_type_node = build_pointer_type( build_qualified_type(char_type_node, TYPE_QUAL_CONST)); /* const char* */ TYPE_STRING_FLAG(elna_char_type_node) = 1; } bool is_string_type(tree type) { gcc_assert(TYPE_P(type)); return TREE_CODE(type) == POINTER_TYPE && TYPE_MAIN_VARIANT(TREE_TYPE(type)) == char_type_node; } bool is_array_type(tree type) { gcc_assert(TYPE_P(type)); return TREE_CODE(type) == ARRAY_TYPE; } tree tree_chain_base::head() { return first; } void tree_chain_base::append(tree t) { gcc_assert(t != NULL_TREE); if (this->first == NULL_TREE) { this->first = this->last = t; } else { chain(t); this->last = t; } } void tree_chain::chain(tree t) { TREE_CHAIN(this->last) = t; } tree_symbol_mapping::tree_symbol_mapping(tree bind_expression, tree block) : m_bind_expression(bind_expression), m_block(block) { } tree tree_symbol_mapping::bind_expression() { return m_bind_expression; } tree tree_symbol_mapping::block() { return m_block; } } }