append_int32 Module Subroutine

pure module subroutine append_int32(array_, element_)

append element to an array (intger version)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(inout), allocatable :: array_(:)
integer(kind=int32), intent(in) :: element_

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private, allocatable :: tmp_array_(:)

Source Code

      pure module subroutine append_int32(array_, element_)
         !! append element to an array (intger version)
         integer(int32), allocatable, intent(inout) :: array_(:)
         integer(int32), intent(in)              :: element_
         !---------------------------------------------------------------------!
         integer(int32), allocatable :: tmp_array_(:)
         !---------------------------------------------------------------------!
         if (allocated(array_)) then
            allocate(tmp_array_(size(array_)+1))
            tmp_array_(:size(array_)) = array_(:)
            tmp_array_(size(array_)+1)    = element_
            deallocate(array_)
            allocate(array_(size(tmp_array_)))
            call move_alloc(tmp_array_, array_)
         else
            allocate(array_(1))
            array_(1) = element_
         endif
      end subroutine append_int32