swap_entries Subroutine

private pure subroutine swap_entries(self, left, right)

Exchange two heap slots, key, payload and insertion index together.

Arguments

Type IntentOptional Attributes Name
class(heap_t), intent(inout) :: self
integer(kind=default_int), intent(in) :: left
integer(kind=default_int), intent(in) :: right

Called by

proc~~swap_entries~~CalledByGraph proc~swap_entries swap_entries proc~sift_down sift_down proc~sift_down->proc~swap_entries proc~sift_up sift_up proc~sift_up->proc~swap_entries proc~heap_build_from heap_t%heap_build_from proc~heap_build_from->proc~sift_down proc~heap_pop heap_t%heap_pop proc~heap_pop->proc~sift_down proc~heap_push heap_t%heap_push proc~heap_push->proc~sift_up proc~a_star a_star proc~a_star->proc~heap_pop proc~a_star->proc~heap_push proc~dijkstra dijkstra proc~dijkstra->proc~heap_pop proc~dijkstra->proc~heap_push

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private :: tmp_insertion
integer(kind=int64), private :: tmp_key
integer(kind=int32), private :: tmp_payload

Source Code

   pure subroutine swap_entries(self, left, right)
      !! Exchange two heap slots, key, payload and insertion index together.
      class(heap_t), intent(inout) :: self
      integer(default_int), intent(in) :: left
      integer(default_int), intent(in) :: right

      integer(int64) :: tmp_key, tmp_insertion
      integer(int32) :: tmp_payload

      tmp_key = self%keys(left)
      tmp_payload = self%payloads(left)
      tmp_insertion = self%insertion(left)

      self%keys(left) = self%keys(right)
      self%payloads(left) = self%payloads(right)
      self%insertion(left) = self%insertion(right)

      self%keys(right) = tmp_key
      self%payloads(right) = tmp_payload
      self%insertion(right) = tmp_insertion
   end subroutine swap_entries