56 procedure(
uset_add), pass(this),
deferred :: add
115 class(
uset_t),
intent(inout) :: this
116 integer,
optional :: n
124 class(
uset_t),
intent(inout) :: this
132 class(
uset_t),
intent(in) :: this
141 class(
uset_t),
intent(inout) :: this
149 class(
uset_t),
intent(inout) :: this
150 class(*),
intent(inout) :: key
159 class(
uset_t),
intent(inout) :: this
160 class(*),
intent(inout) :: key
168 class(
uset_t),
intent(inout) :: this
169 class(*),
intent(inout) :: key
178 integer,
optional :: n
201 entries = this%t%num_entries()
215 class(*),
intent(inout) :: key
221 res = (this%t%get(key, data) .eq. 0)
230 class(*),
intent(inout) :: key
236 call this%t%set(key, data)
245 class(*),
intent(inout) :: key
249 call this%t%remove(key)
257 class(
uset_i4_t),
target,
intent(inout) :: this
258 call this%it%init(this%t)
265 valid = this%it%next()
270 class(
uset_i4_t),
target,
intent(inout) :: this
271 integer,
pointer :: value
272 value => this%it%value()
278 integer,
optional :: n
301 entries = this%t%num_entries()
315 class(*),
intent(inout) :: key
316 integer(kind=i8) :: data
320 type is (
integer(
i8))
321 res = (this%t%get(key, data) .eq. 0)
330 class(*),
intent(inout) :: key
331 integer(kind=i8) :: data
334 type is (
integer(i8))
336 call this%t%set(key, data)
345 class(*),
intent(inout) :: key
348 type is (
integer(i8))
349 call this%t%remove(key)
357 class(
uset_i8_t),
target,
intent(inout) :: this
358 call this%it%init(this%t)
365 valid = this%it%next()
370 class(
uset_i8_t),
target,
intent(inout) :: this
371 integer(kind=i8),
pointer :: value
376 select type (hp => this)
378 value => hp%it%value()
380 call neko_error(
'Invalid uset htable iter (i8)')
387 integer,
optional :: n
409 entries = this%t%num_entries()
423 class(*),
intent(inout) :: key
425 real(kind=
dp) ::
data
428 type is (double precision)
429 res = (this%t%get(key, data) .eq. 0)
439 class(*),
intent(inout) :: key
440 real(kind=
dp) ::
data
443 type is (double precision)
445 call this%t%set(key, data)
454 class(*),
intent(inout) :: key
457 type is (double precision)
458 call this%t%remove(key)
466 class(
uset_r8_t),
target,
intent(inout) :: this
467 call this%it%init(this%t)
474 valid = this%it%next()
479 class(
uset_r8_t),
target,
intent(inout) :: this
480 real(kind=
dp),
pointer ::
value
481 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.