---
name: "sethtitem"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/sethtitem"
---

# sethtitem(3)

test and set an item in an hash table.

## NAME

sethtitem - 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**

## DESCRIPTION

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

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

## DIAGNOSTICS

The value must be distinct from *-1* and *-2*.

## SEE ALSO

**mbk**(1), [**addht**(3)](/addht/3.md), [**delht**(3)](/delht/3.md), [**addhtitem**(3)](/addhtitem/3.md), [**gethtitem**(3)](/gethtitem/3.md), [**delhtitem**(3)](/delhtitem/3.md), [**viewht**(3)](/viewht/3.md).
