NAME¶
namealloc - hash table for strings
ORIGIN¶
This software belongs to the ALLIANCE CAD SYSTEM developed by the ASIM team at
LIP6 laboratory of Université Pierre et Marie CURIE, in Paris,
France.
Web :
http://asim.lip6.fr/recherche/alliance/
E-mail :
alliance-users@asim.lip6.fr
SYNOPSYS¶
#include "mut.h"
char ∗namealloc(inputname)
char ∗inputname;
PARAMETER¶
- inputname
- Pointer to a string of characters
DESCRIPTION¶
The
namealloc function creates a dictionnary of names in mbk. It
warranties equality on characters string if the pointers to these strings are
equal, at
strcmp(3) meaning. This means also that there is a single
memory address for a given string.
The case of the letters do not matter. All names are changed to lower case
before beeing introduced in the symbol table. This is needed because most of
the file format do not check case.
namealloc is used by all mbk utility function using names, so its use
should be needed only when directly filling or modifing the structure, or when
having to compare an external string to mbk internal ones. This should speed
up string comparisons.
One shall never modify the contains of a string pointed to by a result of
namealloc, since all the field that points to this name would have
there values modified, and that there is no chance that the new hash code will
be the same as the old one, so pointer comparison would be meaningless. All
string used by
namealloc are constants string, and therefore must be
left alone.
RETURN VALUE¶
namealloc returns a string pointer. If the
inputname is already in
the hash table, then its internal pointer is returned, else a new entry is
created, and then the new pointer returned.
EXAMPLE¶
#include "mut.h"
#include "mlo.h"
lofig_list ∗find_fig(name)
char ∗name;
{
lofig_list ∗p;
name = namealloc(name);
for (p = HEAD_LOFIG; p; p = p->NEXT)
if (p->NAME == name) /∗ pointer equality ∗/
return p;
return NULL;
}
DIAGNOSTICS¶
namealloc can be used only after a call to
mbkenv(3).
SEE ALSO¶
mbk(1).
BUG REPORT¶
This tool is under development at the
ASIM department of the
LIP6
laboratory.
We need your feedback to improve documentation and tools.