X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fident%2Fident_t.h;h=5919fbc00bc9170bdf883da9969bf548b7abb451;hb=6365c91e1ff24ede138bd3c387215a6b58dff330;hp=269e5c638a3145aea0ff9bf1ecaff4896f5aec91;hpb=e3e22fa6f927847099c0bff62457003aa81f2518;p=libfirm diff --git a/ir/ident/ident_t.h b/ir/ident/ident_t.h index 269e5c638..5919fbc00 100644 --- a/ir/ident/ident_t.h +++ b/ir/ident/ident_t.h @@ -1,73 +1,53 @@ -/* Declarations for ident. - Copyright (C) 1995, 1996 Markus Armbruster */ +/* + * 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 -- private header. + * @author Goetz Lindenmaier + * @version $Id$ + */ +#ifndef FIRM_IDENT_IDENT_T_H +#define FIRM_IDENT_IDENT_T_H -/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe -** All rights reserved. -** -** Authors: Martin Trapp, Christian Schaefer -*/ - -/* $Id$ */ - -# ifndef _IDENT_T_H_ -# define _IDENT_T_H_ - -#include -#include -#include "misc.h" -#include "set.h" #include "ident.h" -# include "xprintf.h" -# include "xp_help.h" - -/* Caution: strings _not_ zero-terminated! */ -#define ID_FROM_STR(str, len) \ - (assert ((len) > 0), \ - (const set_entry *)set_hinsert (id_set, (str), (len), ID_HASH ((str), (len)))) -#define ID_TO_STR(id) ((const char *)&(id)->dptr[0]) -#define ID_TO_STRLEN(id) ((id)->size) -#define ID_TO_HASH(id) ((long)(id) + (id)->hash) - -ident *new_id_derived (const char *pfx, ident *); -ident *new_id_internal (void); -bool id_is_internal (ident *); -void id_init (void); - -/* Vormals Debugunterstuetzung, entfernt (debug.h). */ -# define ID_VRFY(id) ((void)0) - -#ifdef NDEBUG -# define IDS_VRFY(id) ((void)0) -#else -# define IDS_VRFY(id) ids_vrfy ((id)) -void ids_vrfy (ident **id); -#endif - - -#ifdef STATS -# define id_stats() set_stats (id_set) -#else -# define id_stats() ((void)0) -#endif - -/* Private */ - -/* @@@ tune */ -#define ID_HASH(str, len) \ - ((( ((unsigned char *)(str))[0] * 33 \ - + ((unsigned char *)(str))[(len)>>1]) * 31 \ - + ((unsigned char *)(str))[(len)-1]) * 9 \ +/** + * Initialize the ident module. + * + * @param id_if The ident module interface, if NULL, the default + * libFirm ident module will be used. + * @param initial_n_idents Only used in the default libFirm ident module, initial + * number of entries in the hash table. + */ +void init_ident (ident_if_t *id_if, int initial_n_idents); + +/** + * Finishes the ident module, frees all entries. + */ +void finish_ident (void); + +/** The hash function of the internal ident module implementation. */ +#define ID_HASH(type, str, len) \ + ((( ((type *)(str))[0] * 33 \ + + ((type *)(str))[(len)>>1]) * 31 \ + + ((type *)(str))[(len)-1]) * 9 \ + (len)) -extern set *id_set; - -#if 0 -# define id_from_str ID_FROM_STR -# define id_to_str ID_TO_STR -# define id_to_strlen ID_TO_STRLEN #endif - -int ident_print (XP_PAR1, const xprintf_info *, XP_PARN); - -# endif /* _IDENT_T_H_ */