grow_int32 Subroutine

private subroutine grow_int32(arr, n_keep, new_cap)

integer(int32) counterpart of grow_int64.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(inout), allocatable :: arr(:)
integer(kind=default_int), intent(in) :: n_keep
integer(kind=default_int), intent(in) :: new_cap

Called by

proc~~grow_int32~~CalledByGraph proc~grow_int32 grow_int32 proc~heap_reserve heap_t%heap_reserve proc~heap_reserve->proc~grow_int32 proc~heap_build_from heap_t%heap_build_from proc~heap_build_from->proc~heap_reserve proc~heap_init heap_t%heap_init proc~heap_init->proc~heap_reserve proc~heap_push heap_t%heap_push proc~heap_push->proc~heap_reserve proc~a_star a_star proc~a_star->proc~heap_init proc~a_star->proc~heap_push proc~dijkstra dijkstra proc~dijkstra->proc~heap_init proc~dijkstra->proc~heap_push

Variables

Type Visibility Attributes Name Initial
integer(kind=default_int), private :: i
integer(kind=int32), private, allocatable :: tmp(:)

Source Code

   subroutine grow_int32(arr, n_keep, new_cap)
      !! `integer(int32)` counterpart of `grow_int64`.
      integer(int32), allocatable, intent(inout) :: arr(:)
      integer(default_int), intent(in) :: n_keep
      integer(default_int), intent(in) :: new_cap

      integer(int32), allocatable :: tmp(:)
      integer(default_int) :: i

      if (.not. allocated(arr)) then
         allocate (arr(new_cap))
         return
      end if

      allocate (tmp(n_keep))
      do i = 1, n_keep
         tmp(i) = arr(i)
      end do

      deallocate (arr)
      allocate (arr(new_cap))
      do i = 1, n_keep
         arr(i) = tmp(i)
      end do

      deallocate (tmp)
   end subroutine grow_int32