---
name: "rhash_insert"
section: "3"
platform: "linux"
package: "libroy-dev"
version: "1.0.8-1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/rhash_insert"
---

# rhash\_insert(3)

allocate a new rhash

## NAME

rhash\_insert - allocate a new rhash

## SYNOPSIS

\#include \<roy.h\>

void rhash\_insert (RHash *\*hash*, void \**entry*, void \**key*);

## DESCRIPTION

Inserts a new entry into a hash table.  The entry structure is defined by the user, and should contain the macro 'RHASH\_HEADER'.  See [*rhash*(3)](/rhash/3.md) for information on how to create a compatible RHashEntry structure.

*key* is of the type as defined by the compare and hash functions provided at RHash creation time.  See [*rhash*(3)](/rhash/3.md) for details.  This function also sets *key* as the key for *entry*; the equivalent of calling [*rhash\_entry\_setkey*(3)](/rhash_entry_setkey/3.md).  The key is stored as a void \* pointer within the RHASH\_HEADER; no copy of the key is made.

## RETURN VALUE

This function doesn't return a value.

## DUPLICATE ENTRIES

If an entry is inserted into the hash table with a key of an entry that already exists in the hash table, they will both be added and no error condition will exist.  Any calls thereafter to [*rhash\_lookup*(3)](/rhash_lookup/3.md) will return the first entry inserted with that key.

If you do not wish to have multiple entries with the same key, you must do a [*rhash\_lookup*(3)](/rhash_lookup/3.md) prior to inserting the new entry.

## SEE ALSO

[*rhash*(3)](/rhash/3.md), [*rhash\_entry\_getkey*(3)](/rhash_entry_getkey/3.md),  [*rhash\_entry\_setkey*(3)](/rhash_entry_setkey/3.md), [*rhash\_free*(3)](/rhash_free/3.md),  [*rhash\_len*(3)](/rhash_len/3.md), [*rhash\_lookup*(3)](/rhash_lookup/3.md),  [*rhash\_lookup\_next*(3)](/rhash_lookup_next/3.md), [*rhash\_new*(3)](/rhash_new/3.md),  [*rhash\_remove*(3)](/rhash_remove/3.md), [*rhash\_remove\_entry*(3)](/rhash_remove_entry/3.md),  [*roy*(3)](/roy/3.md)
