# PETSC_HASH_SET
Instantiate a new PETSc hash set type 
## Synopsis
```
#include <petsc/private/hashset.h>
PETSC_HASH_SET(HSetT, KeyType, HashFunc, EqualFunc)
```

## Input Parameters

- ***HSetT -*** The hash set type name suffix, i.e. the name of the object created is PetscHSet<HSetT>
- ***KeyType -*** The type of entries, may be a basic type such as int or a struct
- ***HashFunc -*** Routine or function-like macro that computes hash values from entries
- ***EqualFunc -*** Routine or function-like macro that computes whether two values are equal





## Developer Note
Each time this macro is used to create a new hash set type, the make rule for allmanpages in $PETSC_DIR/makefile should
be updated to cause the automatic generation of appropriate manual pages for that type. The manual pages
are generated from the templated version of the documentation in include/petsc/private/hashset.txt.


## References
This code uses the standalone and portable C language khash software https://github.com/attractivechaos/klib


## See Also
 `PetscHSetI`, `PetscHSetICreate()`, `PetscHSetIJ`, `PetscHSetIJCreate()`, `PETSC_HASH_MAP()`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/include/petsc/private/hashset.h.html#PETSC_HASH_SET">include/petsc/private/hashset.h</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petsc/private/hashset.h)


[Index of all PetscH routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
