PETSc version 3.16.5
Fix/Edit manual page

# PetscHMapT

Hash table map

### Synopsis

    /*MC
      PetscHMapTCreate - Create a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTCreate(PetscHMapT *ht)

      Output Parameter:
    . ht - The hash table

    .seealso: PetscHMapTDestroy()
    M*/

    /*MC
      PetscHMapTDestroy - Destroy a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTDestroy(PetscHMapT *ht)

      Input Parameter:
    . ht - The hash table

    .seealso: PetscHMapTCreate()
    M*/

    /*MC
      PetscHMapTReset - Reset a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTReset(PetscHMapT ht)

      Input Parameter:
    . ht - The hash table

    .seealso: PetscHMapTClear()
    M*/

    /*MC
      PetscHMapTDuplicate - Duplicate a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTDuplicate(PetscHMapT ht,PetscHMapT *hd)

      Input Parameter:
    . ht - The source hash table

      Output Parameter:
    . ht - The duplicated hash table

    .seealso: PetscHMapTCreate()
    M*/

    /*MC
      PetscHMapTClear - Clear a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTClear(PetscHMapT ht)

      Input Parameter:
    . ht - The hash table

    .seealso: PetscHMapTReset()
    M*/

    /*MC
      PetscHMapTResize - Set the number of buckets in a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTResize(PetscHMapT ht,PetscInt nb)

      Input Parameters:
    + ht - The hash table
    - nb - The number of buckets

    .seealso: PetscHMapTCreate()
    M*/

    /*MC
      PetscHMapTGetSize - Get the number of entries in a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGetSize(PetscHMapT ht,PetscInt *n)

      Input Parameter:
    . ht - The hash table

      Output Parameter:
    . n - The number of entries

    .seealso: PetscHMapTResize()
    M*/

    /*MC
      PetscHMapTGetCapacity - Get the current size of the array in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGetCapacity(PetscHMapT ht,PetscInt *n)

      Input Parameter:
    . ht - The hash table

      Output Parameter:
    . n - The capacity

    .seealso: PetscHMapTResize(), PetscHMapTGetSize()
    M*/

    /*MC
      PetscHMapTHas - Query for a key in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTHas(PetscHMapT ht,KeyType key,PetscBool *has)

      Input Parameters:
    + ht  - The hash table
    - key - The key

      Output Parameter:
    . has - Boolean indicating whether key is in the hash table

    .seealso:  PetscHMapTGet(), PetscHMapTSet(), PetscHMapTFind()
    M*/

    /*MC
      PetscHMapTGet - Get the value for a key in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGet(PetscHMapT ht,KeyType key,ValType *val)

      Input Parameters:
    + ht  - The hash table
    - key - The key

      Output Parameter:
    . val - The value

    .seealso:  PetscHMapTSet(), PetscHMapTIterGet()
    M*/

    /*MC
      PetscHMapTSet - Set a (key,value) entry in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTSet(PetscHMapT ht,KeyType key,ValType val)

      Input Parameters:
    + ht  - The hash table
    . key - The key
    - val - The value

    .seealso: PetscHMapTGet(), PetscHMapTIterSet()
    M*/

    /*MC
      PetscHMapTDel - Remove a key and its value from the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTDel(PetscHMapT ht,KeyType key)

      Input Parameters:
    + ht  - The hash table
    - key - The key

    .seealso: PetscHMapTHas(), PetscHMapTIterDel()
    M*/

    /*MC
      PetscHMapTQuerySet - Query and set a (key,value) entry in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTQuerySet(PetscHMapT ht,KeyType key,ValType val,PetscBool *missing)

      Input Parameters:
    + ht  - The hash table
    . key - The key
    - val - The value

      Output Parameter:
    . missing - Boolean indicating whether the key was missing

    .seealso: PetscHMapTQueryDel(), PetscHMapTSet()
    M*/

    /*MC
      PetscHMapTQueryDel - Query and remove a (key,value) entry from the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTQueryDel(PetscHMapT ht,KeyType key,PetscBool *present)

      Input Parameters:
    + ht  - The hash table
    - key - The key

      Output Parameter:
    . present - Boolean indicating whether the key was present

    .seealso: PetscHMapTQuerySet(), PetscHMapTDel()
    M*/

    /*MC
      PetscHMapTFind - Query for key in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTFind(PetscHMapT ht,KeyType key,PetscHashIter *iter,PetscBool *found)

      Input Parameters:
    + ht  - The hash table
    - key - The key

      Output Parameters:
    + iter - Iterator referencing the value for key
    - found - Boolean indicating whether the key was present

    .seealso: PetscHMapTIterGet(), PetscHMapTIterDel()
    M*/

    /*MC
      PetscHMapTPut - Set a key in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTPut(PetscHMapT ht,KeyType key,PetscHashIter *iter,PetscBool *missing)

      Input Parameters:
    + ht  - The hash table
    - key - The key

      Output Parameters:
    + iter - Iterator referencing the value for key
    - missing - Boolean indicating whether the key was missing

    .seealso: PetscHMapTIterSet(), PetscHMapTQuerySet(), PetscHMapTSet()
    M*/

    /*MC
      PetscHMapTIterGet - Get the value referenced by an iterator in the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTIterGet(PetscHMapT ht,PetscHashIter iter,ValType *val)

      Input Parameters:
    + ht   - The hash table
    - iter - The iterator

      Output Parameter:
    . val  - The value

    .seealso: PetscHMapTFind(), PetscHMapTGet()
    M*/

    /*MC
      PetscHMapTIterSet - Set the value referenced by an iterator in the hash

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTIterSet(PetscHMapT ht,PetscHashIter iter,ValType val)

      Input Parameters:
    + ht   - The hash table
    . iter - The iterator
    - val  - The value

    .seealso: PetscHMapTPut(), PetscHMapTQuerySet(), PetscHMapTSet()
    M*/

    /*MC
      PetscHMapTIterDel - Remove the (key,value) referenced by an iterator from the hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTIterDel(PetscHMapT ht,PetscHashIter iter)

      Input Parameters:
    + ht   - The hash table
    - iter - The iterator

    .seealso: PetscHMapTFind(), PetscHMapTQueryDel(), PetscHMapTDel()
    M*/

    /*MC
      PetscHMapTGetKeys - Get all keys from a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGetKeys(PetscHMapT ht,PetscInt *off,KeyType array[])

      Input Parameters:
    + ht    - The hash table
    . off   - Input offset in array (usually zero)
    - array - Array where to put hash table keys into

      Output Parameters:
    + off   - Output offset in array (output offset = input offset + hash table size)
    - array - Array filled with the hash table keys

    .seealso: PetscHSetTGetSize(), PetscHMapTGetVals()
    M*/

    /*MC
      PetscHMapTGetVals - Get all values from a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGetVals(PetscHMapT ht,PetscInt *off,ValType array[])

      Input Parameters:
    + ht    - The hash table
    . off   - Input offset in array (usually zero)
    - array - Array where to put hash table values into

      Output Parameters:
    + off   - Output offset in array (output offset = input offset + hash table size)
    - array - Array filled with the hash table values

    .seealso: PetscHSetTGetSize(), PetscHMapTGetKeys()
    M*/

    /*MC
      PetscHMapTGetPairs - Get all (key,value) pairs from a hash table

      Synopsis:
      #include <petsc/private/hashmap.h>
      PetscErrorCode PetscHMapTGetPairs(PetscHMapT ht,PetscInt *off,KeyType karray[],ValType varray[])

      Input Parameters:
    + ht    - The hash table
    . off   - Input offset in array (usually zero)
    - karray - Array where to put hash table keys into
    - varray - Array where to put hash table values into

      Output Parameters:
    + off   - Output offset in array (output offset = input offset + hash table size)
    - karray - Array filled with the hash table keys
    - varray - Array filled with the hash table values

    .seealso: PetscHSetTGetSize(), PetscHMapTGetKeys(), PetscHMapTGetVals()
    M*/

    #define PETSC_HASH_MAP(HashT, KeyType, ValType, HashFunc, EqualFunc, DefaultValue)                   \
                                                                                                         \
    KHASH_INIT(HashT, KeyType, ValType, 1, HashFunc, EqualFunc)                                          \
                                                                                                         \
    typedef khash_t(HashT) *Pet.c.html##HashT;

### Synopsis

    typedef khash_t(HMapT) *PetscHMapT;

### See Also

PETSC_HASH_MAP(), PetscHMapTCreate()

### Level

developer

### Location

include/petsc/private/hashmap.h
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages