sethtitem3
Test and set an item in an hash table.
Synopsys
#include "mut.h" int sethtitem(table, key) ht ∗table; void ∗key;
Parameters
table
|
Hash table pointer |
|---|---|
key
|
Key used by the hash coding function to set an item |
Overview
sethtitem() 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 value
If the key exists, the funtion return 1, if it doesn't, the item is stored and the function returns 0.
Examples
#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.
Diagnostics
The value must be distinct from -1 and -2.
Releases
4 releases since Debian 7 (Wheezy); the text changed 1 time.