keys_equal Function

private pure function keys_equal(me, k1, k2)

Returns true if the two keys are equal.

Allowing a key to be an integer or a character string (can be case sensitive or not), or alternately, a user-defined key_class.

Type Bound

list

Arguments

Type IntentOptional Attributes Name
class(list), intent(in) :: me
class(*), intent(in) :: k1
class(*), intent(in) :: k2

Return Value logical


Calls

proc~~keys_equal~~CallsGraph proc~keys_equal list%keys_equal proc~uppercase uppercase proc~keys_equal->proc~uppercase

Called by

proc~~keys_equal~~CalledByGraph proc~keys_equal list%keys_equal proc~get_node list%get_node proc~get_node->proc~keys_equal proc~add_pointer list%add_pointer proc~add_pointer->proc~get_node proc~get_data list%get_data proc~get_data->proc~get_node proc~remove_by_key list%remove_by_key proc~remove_by_key->proc~get_node proc~add_clone list%add_clone proc~add_clone->proc~add_pointer

Source Code

    pure function keys_equal(me,k1,k2)

    implicit none

    class(list),intent(in) :: me
    class(*),intent(in)    :: k1
    class(*),intent(in)    :: k2
    logical                :: keys_equal

    keys_equal = .false.

    if (same_type_as(k1,k2)) then

        select type (k1)

        class is (key_class)

            select type (k2)
            class is (key_class)
                keys_equal = k1 == k2
            end select

        type is (integer)

            select type (k2)
            type is (integer)
                keys_equal = k1 == k2
            end select

        type is (character(len=*))

            select type (k2)
            type is (character(len=*))
                if (me%case_sensitive) then
                    keys_equal = k1 == k2
                else
                    keys_equal = uppercase(k1) == uppercase(k2)
                end if
            end select

        end select

    end if

    end function keys_equal