# Creating a hashkit structure

## SYNOPSIS

#include <libhashkit-1.0/hashkit.h>

  Compile and link with -lhashkit

typedef struct hashkit_st hashkit_st

hashkit_st *hashkit_create(hashkit_st *hash)
  Parameters:

    hash -- memory address of a `hashkit_st` struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit

  Returns:

    pointer to initialized `hashkit_st` structure

hashkit_st *hashkit_clone(hashkit_st *destination, const hashkit_st *ptr)
  Parameters:

    - destination -- memory address of a `hashkit_st` struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit

    - ptr -- pointer of the `hashkit_st` struct to copy

  Returns:

    pointer to a `hashkit_st` structure (`destination`, if not nullptr), initialized from `ptr`

void hashkit_free(hashkit_st *hash)
  Parameters:

    hash -- pointer to an initialized `hashkit_st` struct

bool hashkit_is_allocated(const hashkit_st *hash)
  Parameters:

    hash -- pointer to an initialized `hashkit_st` struct

  Returns:

    bool, whether the `hash` struct was dynamically allocated

## DESCRIPTION

The `hashkit_create()` function initializes a hashkit object for use. If you pass a nullptr argument for hash, then the memory for the object is allocated. If you specify a pre-allocated piece of memory, that is initialized for use.

The `hashkit_clone()` function initializes a hashkit object much like `hashkit_create()`, but instead of using default settings it will use the settings of the ptr hashkit object.

The `hashkit_free()` frees any resources being consumed by the hashkit objects that were initialized with `hashkit_create()` or `hashkit_clone()`.

The `hashkit_is_allocated()` reports whether the memory was allocated for a hashkit object.

## RETURN VALUE

`hashkit_create()` and `hashkit_clone()` will return nullptr on failure or pointer to `hashkit_st` on success.

`hashkit_is_allocated()` returns true if the memory for the hashkit object was allocated inside of `hashkit_create()` or `hashkit_clone()`, otherwise it is false and was user-supplied memory.

## SEE ALSO

- libhashkit - C/C++ hashing library

- Generate hash value

- Set Hash Function