c_f_char Function

public function c_f_char(cchar) result(fstr)

Uses

  • proc~~c_f_char~~UsesGraph proc~c_f_char c_f_char iso_c_binding iso_c_binding proc~c_f_char->iso_c_binding

@brief Convert raw null-terminated C-string to Fortran string

Note

No boundary checks for c-string are performed, use at your own risk!

Arguments

Type IntentOptional Attributes Name
character(kind=c_char, len=1), intent(in) :: cchar(*)

Return Value character(len=:), allocatable


Called by

proc~~c_f_char~~CalledByGraph proc~c_f_char c_f_char proc~dft_initialize dft_initialize proc~dft_initialize->proc~c_f_char proc~hf_energy hf_energy proc~hf_energy->proc~dft_initialize proc~hf_gradient hf_gradient proc~hf_gradient->proc~dft_initialize proc~oqp_tdhf_z_vector oqp_tdhf_z_vector proc~oqp_tdhf_z_vector->proc~dft_initialize proc~tdhf_energy tdhf_energy proc~tdhf_energy->proc~dft_initialize proc~tdhf_gradient tdhf_gradient proc~tdhf_gradient->proc~dft_initialize proc~tdhf_energy_c tdhf_energy_C proc~tdhf_energy_c->proc~tdhf_energy proc~tdhf_gradient_c tdhf_gradient_C proc~tdhf_gradient_c->proc~tdhf_gradient proc~tdhf_z_vector_c tdhf_z_vector_C proc~tdhf_z_vector_c->proc~oqp_tdhf_z_vector

Source Code

  function c_f_char(cchar) result(fstr)
    use, intrinsic :: iso_c_binding, only: c_char, c_null_char
    character(kind=c_char), intent(in) :: cchar(*)
    character(:), allocatable :: fstr
    integer :: i, strlen

    strlen = 0
    do
        if (cchar(strlen+1) == c_null_char) exit
        strlen = strlen + 1
    end do

    allocate(character(strlen) :: fstr)

    do i = 1, strlen
        fstr(i:i) = cchar(i)
    end do
  end function c_f_char