30 FUNCTION convert_c_string_cptr( cptr )
RESULT (string)
32 use,
intrinsic :: iso_c_binding, only: c_ptr, c_char, &
35 TYPE(c_ptr),
intent(in) :: cptr
36 CHARACTER(len=:),
allocatable :: string
37 CHARACTER(kind=c_char),
dimension(:),
pointer :: chars
38 INTEGER(kind=c_size_t) :: strlen
41 FUNCTION c_strlen(str_ptr)
BIND ( C, name = "strlen" ) RESULT(len)
42 use,
INTRINSIC :: iso_c_binding
43 TYPE(c_ptr),
VALUE :: str_ptr
44 INTEGER(kind=c_size_t) :: len
48 strlen = c_strlen(cptr)
49 CALL c_f_pointer(cptr, chars, [ strlen ])
50 string = convert_c_string_arr(chars)