Program Listing for File genfumpiresplicer.f

Return to documentation for file (umpire/interface/c_fortran/genfumpiresplicer.f)

! Generated by genfumpiresplicer.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Copyright (c) 2016-20, Lawrence Livermore National Security, LLC and Umpire
! project contributors. See the COPYRIGHT file for details.
!
! SPDX-License-Identifier: (MIT)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


! splicer begin class.Allocator.type_bound_procedure_part

procedure :: allocate_int_array_1d => allocator_allocate_int_array_1d
procedure :: deallocate_int_array_1d => allocator_deallocate_int_array_1d
procedure :: allocate_int_array_2d => allocator_allocate_int_array_2d
procedure :: deallocate_int_array_2d => allocator_deallocate_int_array_2d
procedure :: allocate_int_array_3d => allocator_allocate_int_array_3d
procedure :: deallocate_int_array_3d => allocator_deallocate_int_array_3d
procedure :: allocate_int_array_4d => allocator_allocate_int_array_4d
procedure :: deallocate_int_array_4d => allocator_deallocate_int_array_4d
procedure :: allocate_long_array_1d => allocator_allocate_long_array_1d
procedure :: deallocate_long_array_1d => allocator_deallocate_long_array_1d
procedure :: allocate_long_array_2d => allocator_allocate_long_array_2d
procedure :: deallocate_long_array_2d => allocator_deallocate_long_array_2d
procedure :: allocate_long_array_3d => allocator_allocate_long_array_3d
procedure :: deallocate_long_array_3d => allocator_deallocate_long_array_3d
procedure :: allocate_long_array_4d => allocator_allocate_long_array_4d
procedure :: deallocate_long_array_4d => allocator_deallocate_long_array_4d
procedure :: allocate_float_array_1d => allocator_allocate_float_array_1d
procedure :: deallocate_float_array_1d => allocator_deallocate_float_array_1d
procedure :: allocate_float_array_2d => allocator_allocate_float_array_2d
procedure :: deallocate_float_array_2d => allocator_deallocate_float_array_2d
procedure :: allocate_float_array_3d => allocator_allocate_float_array_3d
procedure :: deallocate_float_array_3d => allocator_deallocate_float_array_3d
procedure :: allocate_float_array_4d => allocator_allocate_float_array_4d
procedure :: deallocate_float_array_4d => allocator_deallocate_float_array_4d
procedure :: allocate_double_array_1d => allocator_allocate_double_array_1d
procedure :: deallocate_double_array_1d => allocator_deallocate_double_array_1d
procedure :: allocate_double_array_2d => allocator_allocate_double_array_2d
procedure :: deallocate_double_array_2d => allocator_deallocate_double_array_2d
procedure :: allocate_double_array_3d => allocator_allocate_double_array_3d
procedure :: deallocate_double_array_3d => allocator_deallocate_double_array_3d
procedure :: allocate_double_array_4d => allocator_allocate_double_array_4d
procedure :: deallocate_double_array_4d => allocator_deallocate_double_array_4d
generic, public :: allocate => &
    allocate_int_array_1d, &
    allocate_int_array_2d, &
    allocate_int_array_3d, &
    allocate_int_array_4d, &
    allocate_long_array_1d, &
    allocate_long_array_2d, &
    allocate_long_array_3d, &
    allocate_long_array_4d, &
    allocate_float_array_1d, &
    allocate_float_array_2d, &
    allocate_float_array_3d, &
    allocate_float_array_4d, &
    allocate_double_array_1d, &
    allocate_double_array_2d, &
    allocate_double_array_3d, &
    allocate_double_array_4d

generic, public :: deallocate => &
    deallocate_int_array_1d, &
    deallocate_int_array_2d, &
    deallocate_int_array_3d, &
    deallocate_int_array_4d, &
    deallocate_long_array_1d, &
    deallocate_long_array_2d, &
    deallocate_long_array_3d, &
    deallocate_long_array_4d, &
    deallocate_float_array_1d, &
    deallocate_float_array_2d, &
    deallocate_float_array_3d, &
    deallocate_float_array_4d, &
    deallocate_double_array_1d, &
    deallocate_double_array_2d, &
    deallocate_double_array_3d, &
    deallocate_double_array_4d

! splicer end class.Allocator.type_bound_procedure_part

! splicer begin class.Allocator.additional_functions


subroutine allocator_allocate_int_array_1d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_INT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_int_array_1d



subroutine allocator_deallocate_int_array_1d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_int_array_1d



subroutine allocator_allocate_int_array_2d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_INT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_int_array_2d



subroutine allocator_deallocate_int_array_2d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_int_array_2d



subroutine allocator_allocate_int_array_3d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_INT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_int_array_3d



subroutine allocator_deallocate_int_array_3d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_int_array_3d



subroutine allocator_allocate_int_array_4d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_INT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_int_array_4d



subroutine allocator_deallocate_int_array_4d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_INT), intent(inout), pointer, dimension(:, :, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_int_array_4d



subroutine allocator_allocate_long_array_1d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_LONG) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_long_array_1d



subroutine allocator_deallocate_long_array_1d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_long_array_1d



subroutine allocator_allocate_long_array_2d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_LONG) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_long_array_2d



subroutine allocator_deallocate_long_array_2d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_long_array_2d



subroutine allocator_allocate_long_array_3d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_LONG) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_long_array_3d



subroutine allocator_deallocate_long_array_3d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_long_array_3d



subroutine allocator_allocate_long_array_4d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      integer(C_LONG) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_long_array_4d



subroutine allocator_deallocate_long_array_4d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      integer(C_LONG), intent(inout), pointer, dimension(:, :, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_long_array_4d



subroutine allocator_allocate_float_array_1d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_FLOAT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_float_array_1d



subroutine allocator_deallocate_float_array_1d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_float_array_1d



subroutine allocator_allocate_float_array_2d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_FLOAT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_float_array_2d



subroutine allocator_deallocate_float_array_2d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_float_array_2d



subroutine allocator_allocate_float_array_3d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_FLOAT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_float_array_3d



subroutine allocator_deallocate_float_array_3d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_float_array_3d



subroutine allocator_allocate_float_array_4d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_FLOAT) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_float_array_4d



subroutine allocator_deallocate_float_array_4d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_FLOAT), intent(inout), pointer, dimension(:, :, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_float_array_4d



subroutine allocator_allocate_double_array_1d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_DOUBLE) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_double_array_1d



subroutine allocator_deallocate_double_array_1d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_double_array_1d



subroutine allocator_allocate_double_array_2d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_DOUBLE) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_double_array_2d



subroutine allocator_deallocate_double_array_2d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_double_array_2d



subroutine allocator_allocate_double_array_3d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_DOUBLE) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_double_array_3d



subroutine allocator_deallocate_double_array_3d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_double_array_3d



subroutine allocator_allocate_double_array_4d(this, array, dims)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :, :, :) :: array

      integer, dimension(:) :: dims

      type(c_ptr) :: data_ptr

      real(C_DOUBLE) :: size_type
      integer(C_SIZE_T) :: num_bytes

      num_bytes = product(dims) * sizeof(size_type)
      data_ptr = this%allocate_pointer(num_bytes)

      call c_f_pointer(data_ptr, array, dims)
end subroutine allocator_allocate_double_array_4d



subroutine allocator_deallocate_double_array_4d(this, array)
      use iso_c_binding

      class(umpireallocator) :: this
      real(C_DOUBLE), intent(inout), pointer, dimension(:, :, :, :) :: array

      type(c_ptr) :: data_ptr

      data_ptr = c_loc(array)

      call this%deallocate_pointer(data_ptr)
      nullify(array)
end subroutine allocator_deallocate_double_array_4d


! splicer end class.Allocator.additional_functions