bionic (3) namealloc.3.gz

Provided by: alliance_5.1.1-1.1build1_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).