static void reset_point(struct grecs_locus_point *point, struct grecs_symtab *st) { struct grecs_syment *ent, key; int install = 1; if (!point->file) return; key.name = (char*) point->file; ent = grecs_symtab_lookup_or_install(st, &key, &install); if (!ent) grecs_alloc_die(); point->file = ent->name; }
/* Lookup a text. If it does not exist, create it. */ char * grecs_install_text(const char *str) { struct grecs_syment key; struct grecs_syment *ent; int install = 1; if (!text_table) { text_table = grecs_symtab_create_default( sizeof(struct grecs_syment)); if (!text_table) grecs_alloc_die(); } key.name = (char*) str; ent = grecs_symtab_lookup_or_install(text_table, &key, &install); if (!ent) grecs_alloc_die(); return ent->name; }