C_F_PROCPOINTER(3) - [ISO_C_BINDING] Convert C into Fortran procedure pointer
call c_f_procpointer(cptr, fptr)
subroutine c_f_procpointer(cptr, fptr )type(c_funptr),intent(in) :: cprt type(TYPE),pointer,intent(out) :: fprt
C_F_PROCPOINTER(3) assigns the target of the C function pointer CPTR to the Fortran procedure pointer FPTR.
o CPTR : scalar of the type c_funptr. It is INTENT(IN). o FPTR : procedure pointer interoperable with CPTR. It is INTENT(OUT).
Sample program:
program demo_c_f_procpointer use iso_c_binding implicit none abstract interface function func(a) import :: c_float real(c_float), intent(in) :: a real(c_float) :: func end function end interface interface function getIterFunc() bind(c,name="getIterFunc") import :: c_funptr type(c_funptr) :: getIterFunc end function end interface type(c_funptr) :: cfunptr procedure(func), pointer :: myFunc cfunptr = getIterFunc() call c_f_procpointer(cfunptr, myFunc) end program demo_c_f_procpointer
Fortran 2003
C_LOC(3), C_F_POINTER(3), ISO_C_BINDING(3)
Fortran intrinsic descriptions
Nemo Release 3.1 | c_f_procpointer (3fortran) | November 02, 2024 |