Skip to main content
`Ctrl`+`K`

# PetscHMapISetWithMode

Set a (key,value) entry in the hash table according to an `InsertMode`

## Synopsis

    #include <petsc/private/hashmapi.h>
    PetscErrorCode PetscHMapISetWithMode(PetscHMapI ht, PetscInt key, PetscInt val, InsertMode mode)

## Input Parameters

- ht - The hash table

- key - The key

- val - The value

- mode - The insertion mode

## Notes

`mode` may be any of the following:

- `INSERT_VALUES`: this routine behaves identically to `PetscHMapISet()`.

- `ADD_VALUES`: if `key` is found `val` is added to the current entry, otherwise (`key`, `value`) is inserted into `ht` as-if-by `INSERT_VALUES`.

- `MAX_VALUES`: if `key` is found the current value is replaced by the maximum of `val` and the current entry, otherwise (`key`, `value`) is inserted into `ht` as-if-by `INSERT_VALUES`.

- `MIN_VALUES`: if `key` is found the current value is replaced by the minimum of `val` and the current entry, otherwise (`key`, `value`) is inserted into `ht` as-if-by `INSERT_VALUES`.

All other `InsertMode` values raise an error.

Since this routine relies on `+`, `<`, and `>` being well-formed for a particular type it is not available by default for all PETSc hash table instantiations. If a particular instantiation supports this routine it must define `PETSC_HMAPI_HAVE_EXTENDED_API` to `1`.

## See Also

`PetscHMapISet()`, `PetscHMapIGet()`, `PetscHMapIGetWithDefault()`, `PetscHMapIIterSet()`

## Level

developer

## Location

include/petsc/private/hashmap.txt.h

Index of all PetscH routines
Table of Contents for all manual pages
Index of all manual pages