tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
69
Task/Queue-Definition/Fortran/queue-definition.f
Normal file
69
Task/Queue-Definition/Fortran/queue-definition.f
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
module FIFO
|
||||
use fifo_nodes
|
||||
! fifo_nodes must define the type fifo_node, with the two field
|
||||
! next and valid, for queue handling, while the field datum depends
|
||||
! on the usage (see [[FIFO (usage)]] for an example)
|
||||
! type fifo_node
|
||||
! integer :: datum
|
||||
! ! the next part is not variable and must be present
|
||||
! type(fifo_node), pointer :: next
|
||||
! logical :: valid
|
||||
! end type fifo_node
|
||||
|
||||
type fifo_head
|
||||
type(fifo_node), pointer :: head, tail
|
||||
end type fifo_head
|
||||
|
||||
contains
|
||||
|
||||
subroutine new_fifo(h)
|
||||
type(fifo_head), intent(out) :: h
|
||||
nullify(h%head)
|
||||
nullify(h%tail)
|
||||
end subroutine new_fifo
|
||||
|
||||
subroutine fifo_enqueue(h, n)
|
||||
type(fifo_head), intent(inout) :: h
|
||||
type(fifo_node), intent(inout), target :: n
|
||||
|
||||
if ( associated(h%tail) ) then
|
||||
h%tail%next => n
|
||||
h%tail => n
|
||||
else
|
||||
h%tail => n
|
||||
h%head => n
|
||||
end if
|
||||
|
||||
nullify(n%next)
|
||||
end subroutine fifo_enqueue
|
||||
|
||||
subroutine fifo_dequeue(h, n)
|
||||
type(fifo_head), intent(inout) :: h
|
||||
type(fifo_node), intent(out), target :: n
|
||||
|
||||
if ( associated(h%head) ) then
|
||||
n = h%head
|
||||
if ( associated(n%next) ) then
|
||||
h%head => n%next
|
||||
else
|
||||
nullify(h%head)
|
||||
nullify(h%tail)
|
||||
end if
|
||||
n%valid = .true.
|
||||
else
|
||||
n%valid = .false.
|
||||
end if
|
||||
nullify(n%next)
|
||||
end subroutine fifo_dequeue
|
||||
|
||||
function fifo_isempty(h) result(r)
|
||||
logical :: r
|
||||
type(fifo_head), intent(in) :: h
|
||||
if ( associated(h%head) ) then
|
||||
r = .false.
|
||||
else
|
||||
r = .true.
|
||||
end if
|
||||
end function fifo_isempty
|
||||
|
||||
end module FIFO
|
||||
Loading…
Add table
Add a link
Reference in a new issue