Provided by: alliance_5.0-20120515-6_amd64 bug

NAME

       namealloc - hash table for strings

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).