key_module.f90 Source File


Files dependent on this one

sourcefile~~key_module.f90~~AfferentGraph sourcefile~key_module.f90 key_module.f90 sourcefile~linked_list_module.f90 linked_list_module.f90 sourcefile~linked_list_module.f90->sourcefile~key_module.f90

Source Code

!*****************************************************************************************
!> author: Jacob Williams
!
!  A key to a linked list

    module key_module

    use iso_fortran_env

    implicit none

    private

    type,abstract,public :: key_class
        !! Can be used as a key for the list.
        !! it can be extended to use any data as a key.
        !! all that is necessary is to define the == operator function.
        !! For convienence, integer or characters keys are also
        !! allowed to be used.
    contains
        !private  ! remove for now to work around intel compile bug. see issue #6
        procedure(key_equal_func),deferred :: key_equal
        generic,public :: operator(==) => key_equal
    end type key_class

    abstract interface
        pure elemental logical function key_equal_func(item1,item2)
            !! interface for equality operator for [[key_class]].
            import :: key_class
            implicit none
            class(key_class),intent(in) :: item1
            class(key_class),intent(in) :: item2
        end function key_equal_func
    end interface

!*****************************************************************************************
    end module key_module
!*****************************************************************************************