Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine c_to_f_string(s,f)character(kind=C_CHAR,len=1),intent(in)::s(*)character(len=:),allocatable,intent(out)::finteger::ncharsnchars=0do while(s(nchars+1).ne.C_NULL_CHAR)nchars=nchars+1end do allocate(character(len=nchars)::f)if(storage_size(f).eq.storage_size(s)*nchars)thenf=transfer(s(1:nchars),f)else stop"can't transfer C_CHAR array to fortran character, do explicit copy!"end if end subroutine c_to_f_string