soa_resize_int64_field Subroutine

private subroutine soa_resize_int64_field(values, new_capacity, keep, fill_to, err)

Resize an integer(int64) field.

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(inout), allocatable :: values(:)
integer(kind=default_int), intent(in) :: new_capacity
integer(kind=default_int), intent(in) :: keep
integer(kind=default_int), intent(in) :: fill_to
type(error_t), intent(inout) :: err

Calls

proc~~soa_resize_int64_field~~CallsGraph proc~soa_resize_int64_field soa_resize_int64_field proc~error_has_error error_t%error_has_error proc~soa_resize_int64_field->proc~error_has_error proc~soa_check_alloc soa_check_alloc proc~soa_resize_int64_field->proc~soa_check_alloc proc~soa_check_resize_args soa_check_resize_args proc~soa_resize_int64_field->proc~soa_check_resize_args interface~to_char to_char proc~soa_check_alloc->interface~to_char proc~error_set error_t%error_set proc~soa_check_alloc->proc~error_set proc~soa_check_resize_args->interface~to_char proc~soa_check_resize_args->proc~error_set proc~to_char_char to_char_char interface~to_char->proc~to_char_char proc~to_char_dp to_char_dp interface~to_char->proc~to_char_dp proc~to_char_int32 to_char_int32 interface~to_char->proc~to_char_int32 proc~to_char_int64 to_char_int64 interface~to_char->proc~to_char_int64 proc~to_char_logical to_char_logical interface~to_char->proc~to_char_logical proc~to_char_matrix_dp to_char_matrix_dp interface~to_char->proc~to_char_matrix_dp proc~to_char_matrix_int32 to_char_matrix_int32 interface~to_char->proc~to_char_matrix_int32 proc~to_char_matrix_int64 to_char_matrix_int64 interface~to_char->proc~to_char_matrix_int64 proc~to_char_matrix_sp to_char_matrix_sp interface~to_char->proc~to_char_matrix_sp proc~to_char_sp to_char_sp interface~to_char->proc~to_char_sp proc~to_char_vector_dp to_char_vector_dp interface~to_char->proc~to_char_vector_dp proc~to_char_vector_int32 to_char_vector_int32 interface~to_char->proc~to_char_vector_int32 proc~to_char_vector_int64 to_char_vector_int64 interface~to_char->proc~to_char_vector_int64 proc~to_char_vector_sp to_char_vector_sp interface~to_char->proc~to_char_vector_sp

Called by

proc~~soa_resize_int64_field~~CalledByGraph proc~soa_resize_int64_field soa_resize_int64_field interface~soa_resize_field soa_resize_field interface~soa_resize_field->proc~soa_resize_int64_field proc~particle_soa_resize particle_soa_t%particle_soa_resize proc~particle_soa_resize->interface~soa_resize_field proc~particle_soa_allocate particle_soa_t%particle_soa_allocate proc~particle_soa_allocate->proc~particle_soa_resize

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private, allocatable :: buffer(:)
integer(kind=default_int), private :: stat

Source Code

   subroutine soa_resize_int64_field(values, new_capacity, keep, fill_to, err)
      !! Resize an `integer(int64)` field.
      integer(int64), allocatable, intent(inout) :: values(:)
      integer(default_int), intent(in) :: new_capacity
      integer(default_int), intent(in) :: keep
      integer(default_int), intent(in) :: fill_to
      type(error_t), intent(inout) :: err

      integer(int64), allocatable :: buffer(:)
      integer(default_int) :: stat

      call soa_check_resize_args(new_capacity, keep, fill_to, err)
      if (err%has_error()) return

      if (allocated(values)) then
         if (size(values, kind=default_int) == new_capacity) then
            if (fill_to > keep) values(keep + 1:fill_to) = 0_int64
            return
         end if
      end if

      allocate (buffer(new_capacity), stat=stat)
      call soa_check_alloc(stat, "resizing an int64 field", err)
      if (err%has_error()) return
      if (keep > 0) buffer(1:keep) = values(1:keep)
      if (fill_to > keep) buffer(keep + 1:fill_to) = 0_int64
      call move_alloc(buffer, values)
   end subroutine soa_resize_int64_field