X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fident%2Fident.c;h=47838da79d691e2a6a6c61ac42cd671928858e99;hb=afbbc0b1ccd684c4c24bfd43d0f994123245f39f;hp=f73581039eaf2879fe8c846c573dd0d7aedc648c;hpb=863d31d7a5c8210432fef88b30fc3e8353131538;p=libfirm diff --git a/ir/ident/ident.c b/ir/ident/ident.c index f73581039..47838da79 100644 --- a/ir/ident/ident.c +++ b/ir/ident/ident.c @@ -1,38 +1,46 @@ /* - * Project: libFIRM - * File name: ir/common/ident.c - * Purpose: Hash table to store names. - * Author: Goetz Lindenmaier - * Modified by: - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1999-2003 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ +/** + * @file + * @brief Hash table to store names. + * @author Goetz Lindenmaier + * @version $Id$ + */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include +#include #include #include #include -#ifdef HAVE_ALLOCA_H -#include -#endif -#ifdef HAVE_MALLOC_H -#include -#endif - #ifdef FIRM_ENABLE_WCHAR #include #endif #include "ident_t.h" #include "set.h" +#include "xmalloc.h" /* for debugging only, not the real implementation */ struct _ident { @@ -88,6 +96,7 @@ static ident *set_new_id_from_str(void *handle, const char *str) static const char *set_get_id_str(void *handle, ident *id) { struct set_entry *entry = (struct set_entry *)id; + (void) handle; return (const char *)entry->dptr; } @@ -103,6 +112,7 @@ static const char *set_get_id_str(void *handle, ident *id) static int set_get_id_strlen(void *handle, ident *id) { struct set_entry *entry = (struct set_entry *)id; + (void) handle; return entry->size; } @@ -272,6 +282,7 @@ void init_ident(ident_if_t *id_if, int initial_n_idents) impl.get_id_wcslen = set_get_id_wcslen; #endif /* FIRM_ENABLE_WCHAR */ + /* it's ok to use memcmp here, we check only strings */ impl.handle = new_set(memcmp, initial_n_idents); } } @@ -328,6 +339,16 @@ int id_contains_char(ident *id, char c) return strchr(get_id_str(id), c) != NULL; } +ident *id_unique(const char *tag) +{ + static unsigned unique_id = 0; + char buf[256]; + + snprintf(buf, sizeof(buf), tag, unique_id); + unique_id++; + return new_id_from_str(buf); +} + #ifdef FIRM_ENABLE_WCHAR ident *new_id_from_wcs (const wchar_t *str)