10 use iso_c_binding,
only: c_ptr
29 procedure,
public ::
has
38 #include "oops/base/variables_interface.f"
46 type(c_ptr),
intent(in) :: ptr
54 use iso_c_binding,
only: c_ptr, c_char
58 character(*),
intent(in) :: varname
60 character(kind=c_char,len=1),
allocatable :: c_vname(:)
62 call f_c_string(trim(varname), c_vname)
71 use iso_c_binding,
only: c_ptr, c_char
75 character(*),
intent(in) :: varnames(:)
77 character(kind=c_char,len=1),
allocatable :: c_vname(:)
80 do iname = 1,
size(varnames)
81 call f_c_string(trim(varnames(iname)), c_vname)
100 use iso_c_binding,
only: c_ptr, c_char, c_size_t
105 integer,
intent(in) :: jj
106 character(MAXVARLEN) :: varname
108 integer(c_size_t) :: lcname
109 character(kind=c_char,len=1),
allocatable :: cname(:)
113 allocate(cname(lcname+1))
115 int(
size(cname), c_size_t), cname)
116 call c_f_string(cname, varname)
127 character(MAXVARLEN),
allocatable ::
varlist(:)
130 allocate(
varlist(this%nvars()))
132 do jj = 1, this%nvars()
133 varlist(jj) = this%variable(jj)
139 logical function has(this, var)
140 use iso_c_binding,
only: c_char
145 character(*),
intent(in) :: var
147 character(kind=c_char,len=1),
allocatable :: c_var(:)
149 call f_c_string(trim(var), c_var)