|
NAMEsethtitem - test and set an item in an hash table. See the file man1/alc_origin.1. SYNOPSIS#include "mut.h" int sethtitem(table, key) ht ∗table; void ∗key; PARAMETERSDESCRIPTIONsethtitem() adds an item in the hash table pointed to by table, whether it existed or not, and returns an appropriate value. This is kind of a test and set operator. RETURN VALUEIf the key exists, the function return 1, if it doesn't, the item is stored and the function returns 0. EXAMPLE#include <stdio.h>
#include "mut.h"
checksigname(p)
lofig_list *p;
{
int i;
losig_list *ptsig;
locon_list *ptcon;
ht *h;
char *amatla;
for (i = 0, ptsig = p->LOSIG; ptsig; i++, ptsig = ptsig->NEXT);
h = addht(i << 1); /* half empty hash tables are faster! */
for (ptcon = p->LOCON; ptcon; ptcon = ptcon->NEXT)
addhtitem(h, ptcon->NAME, 0);
for (ptsig = p->LOSIG; ptsig; ptsig = ptsig->NEXT) {
if (ptsig->TYPE == INTERNAL) {
amatla = getsigname(ptsig);
if (!sethtitem(h, amatla, 0))
printf("node %s is now unique\n", amatla);
}
}
delht(h);
}
ERRORS"∗∗∗ mbk error ∗∗∗ sethtitem impossible : value is EMPTYHT or DELETEHT" The values EMPTYHT, -1, and
DELETEHT, -2, are reserved for internal use, sorry.
DIAGNOSTICSThe value must be distinct from -1 and -2. SEE ALSOmbk(1), addht(3), delht(3), addhtitem(3), gethtitem(3), delhtitem(3), viewht(3). See the file man1/alc_bug_report.1.
|