52 procedure(
uset_add), pass(this),
deferred :: add
111 class(
uset_t),
intent(inout) :: this
112 integer,
optional :: n
120 class(
uset_t),
intent(inout) :: this
128 class(
uset_t),
intent(in) :: this
137 class(
uset_t),
intent(inout) :: this
145 class(
uset_t),
intent(inout) :: this
146 class(*),
intent(inout) :: key
155 class(
uset_t),
intent(inout) :: this
156 class(*),
intent(inout) :: key
164 class(
uset_t),
intent(inout) :: this
165 class(*),
intent(inout) :: key
174 integer,
optional :: n
197 entries = this%t%num_entries()
211 class(*),
intent(inout) :: key
217 res = (this%t%get(key, data) .eq. 0)
226 class(*),
intent(inout) :: key
232 call this%t%set(key, data)
241 class(*),
intent(inout) :: key
245 call this%t%remove(key)
253 class(
uset_i4_t),
target,
intent(inout) :: this
254 call this%it%init(this%t)
261 valid = this%it%next()
266 class(
uset_i4_t),
target,
intent(inout) :: this
267 integer,
pointer :: value
268 value => this%it%value()
274 integer,
optional :: n
297 entries = this%t%num_entries()
311 class(*),
intent(inout) :: key
312 integer(kind=i8) :: data
316 type is (
integer(
i8))
317 res = (this%t%get(key, data) .eq. 0)
326 class(*),
intent(inout) :: key
327 integer(kind=i8) :: data
330 type is (
integer(i8))
332 call this%t%set(key, data)
341 class(*),
intent(inout) :: key
344 type is (
integer(i8))
345 call this%t%remove(key)
353 class(
uset_i8_t),
target,
intent(inout) :: this
354 call this%it%init(this%t)
361 valid = this%it%next()
366 class(
uset_i8_t),
target,
intent(inout) :: this
367 integer(kind=i8),
pointer :: value
372 select type(hp => this)
374 value => hp%it%value()
376 call neko_error(
'Invalid uset htable iter (i8)')
383 integer,
optional :: n
405 entries = this%t%num_entries()
419 class(*),
intent(inout) :: key
421 real(kind=
dp) ::
data
424 type is (double precision)
425 res = (this%t%get(key, data) .eq. 0)
435 class(*),
intent(inout) :: key
436 real(kind=
dp) ::
data
439 type is (double precision)
441 call this%t%set(key, data)
450 class(*),
intent(inout) :: key
453 type is (double precision)
454 call this%t%remove(key)
462 class(
uset_r8_t),
target,
intent(inout) :: this
463 call this%it%init(this%t)
470 valid = this%it%next()
475 class(
uset_r8_t),
target,
intent(inout) :: this
476 real(kind=
dp),
pointer ::
value
477 value => this%it%value()
Inteface for adding key to an unorderd set.
Interface for clearing an unordered set.
Interface for checking if key is an element of an unordered set.
Interface for destroying an unordered set.
Interface for initializing an unordered set.
Inteface for removing key in an unorderd set.
Interface for getting the cardinality of an unordered set.
Implements a hash table ADT.
integer, parameter, public i8
integer, parameter, public dp
Implements an unordered set ADT.
subroutine uset_r8_clear(this)
Clear a double precision based unordered set.
subroutine uset_i4_iter_init(this)
Initialise an integer based set iterator.
subroutine uset_i4_add(this, key)
Add an integer key to the set.
subroutine uset_i8_clear(this)
Clear an integer*8 based unordered set.
subroutine uset_r8_remove(this, key)
Remove a double precision key from the set.
subroutine uset_r8_add(this, key)
Add a double precision key to the set.
logical function uset_i8_element(this, key)
Check if an integer*8 key is an element of the set.
subroutine uset_i8_add(this, key)
Add an integer*8 key to the set.
subroutine uset_i8_iter_init(this)
Initialise an integer based set iterator*8.
logical function uset_i8_iter_next(this)
Advance an integer*8 based set iterator.
integer function, pointer uset_i4_iter_value(this)
Return the current value of an integer based set iterator.
subroutine uset_i4_clear(this)
Clear an integer based unordered set.
integer(kind=i8) function, pointer uset_i8_iter_value(this)
Return the current value of an integer*8 based set iterator.
subroutine uset_r8_init(this, n)
Initialize an empty double precision based unordered set.
real(kind=dp) function, pointer uset_r8_iter_value(this)
Return the current value of a double precision based set iterator.
subroutine uset_i8_init(this, n)
Initialize an empty integer*8 based unordered set.
subroutine uset_i8_remove(this, key)
Remove an integer*8 key from the set.
subroutine uset_r8_iter_init(this)
Initialise a double precision based set iterator.
logical function uset_i4_element(this, key)
Check if an integer key is an element of the set.
subroutine uset_i4_init(this, n)
Initialize an empty integer based unordered set.
logical function uset_r8_iter_next(this)
Advance a double precision based set iterator.
pure integer function uset_i4_size(this)
Return the cardinality of an integer based unordered set.
logical function uset_i4_iter_next(this)
Advance an integer based set iterator.
pure integer function uset_i8_size(this)
Return the cardinality of an integer*8 based unordered set.
subroutine uset_i4_remove(this, key)
Remove an integer key from the set.
subroutine uset_i8_free(this)
Destroy an integer*8 based unordered set.
subroutine uset_r8_free(this)
Destroy a double precision based unordered set.
subroutine uset_i4_free(this)
Destroy an integer based unordered set.
pure integer function uset_r8_size(this)
Return the cardinality of a double precision based unordered set.
logical function uset_r8_element(this, key)
Check if a double precision key is an element of the set.
Integer based hash table.
Integer*8 based hash table.
Iterator for an integer based hash table.
Iterator for an integer*8 based hash table.
Iterator for a double precision based hash table.
Double precision based hash table.
Integer based unordered set.
Integer*8 based unordered set.
Double precision unordered set.
Base type for an unordered set.