Checks whether a given key is currently stored in the dictionary.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dict_str_i4_type), | intent(inout) | :: | dict | |||
character(len=default_string_length) | :: | key |
FUNCTION dict_str_i4_haskey(dict, key) RESULT(res)
!! Checks whether a given key is currently stored in the dictionary.
TYPE(dict_str_i4_type), intent(inout) :: dict
CHARACTER(LEN=default_string_length) :: key
LOGICAL :: res
TYPE(private_item_type_str_i4), POINTER :: item
INTEGER(KIND=int_8) :: hash, idx
IF (.not. ASSOCIATED(dict%buckets)) &
DBCSR_ABORT("dict_str_i4_haskey: dictionary is not initialized.")
res = .FALSE.
IF (dict%size == 0) RETURN
hash = hash_str (key)
idx = MOD(hash, INT(size(dict%buckets), KIND=int_8)) + 1
item => dict%buckets(idx)%p
do while (ASSOCIATED(item))
IF (item%hash == hash) THEN
IF (item%key == key) THEN
res = .TRUE.
return
END IF
END IF
item => item%next
end do
END FUNCTION dict_str_i4_haskey