X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=entity.c;h=d828c8af8a60df33a2b1f2a6504d6c819b45930d;hb=bf92df408b5fef01d5ee065b02c1deb7e4289a5b;hp=748ead0b6a6da287d45b056ed689eff3c8331e69;hpb=979fce13621246b706781035786b5d11a8e2f608;p=cparser diff --git a/entity.c b/entity.c index 748ead0..d828c8a 100644 --- a/entity.c +++ b/entity.c @@ -25,6 +25,7 @@ #include "ast_t.h" #include "adt/error.h" #include "adt/util.h" +#include "adt/strutil.h" const char *get_entity_kind_name(entity_kind_t kind) { @@ -80,10 +81,27 @@ static size_t get_entity_struct_size(entity_kind_t kind) * * @param kind the kind of the entity to allocate */ -entity_t *allocate_entity_zero(entity_kind_t kind) +entity_t *allocate_entity_zero(entity_kind_t const kind, entity_namespace_t const namespc, symbol_t *const symbol) { - size_t size = get_entity_struct_size(kind); - entity_t *entity = allocate_ast_zero(size); - entity->kind = kind; + size_t size = get_entity_struct_size(kind); + entity_t *entity = allocate_ast_zero(size); + entity->kind = kind; + entity->base.namespc = namespc; + entity->base.symbol = symbol; return entity; } + +elf_visibility_tag_t get_elf_visibility_from_string(const char *string) +{ + if (streq(string, "default")) { + return ELF_VISIBILITY_DEFAULT; + } else if (streq(string, "hidden")) { + return ELF_VISIBILITY_HIDDEN; + } else if (streq(string, "internal")) { + return ELF_VISIBILITY_INTERNAL; + } else if (streq(string, "protected")) { + return ELF_VISIBILITY_PROTECTED; + } else { + return ELF_VISIBILITY_ERROR; + } +}