10 use iso_c_binding,
only: c_ptr
31 procedure,
public ::
has
41 #include "oops/base/variables_interface.f"
48 use iso_c_binding,
only: c_ptr
51 type(c_ptr),
intent(in) :: ptr
67 use iso_c_binding,
only: c_null_ptr
78 use iso_c_binding,
only: c_char
82 character(*),
intent(in) :: varname
84 character(kind=c_char,len=1),
allocatable :: c_vname(:)
86 call f_c_string(trim(varname), c_vname)
95 use iso_c_binding,
only: c_char
99 character(*),
intent(in) :: varnames(:)
101 character(kind=c_char,len=1),
allocatable :: c_vname(:)
104 do iname = 1,
size(varnames)
105 call f_c_string(trim(varnames(iname)), c_vname)
124 use iso_c_binding,
only: c_char, c_size_t
129 integer,
intent(in) :: jj
130 character(MAXVARLEN) :: varname
132 integer(c_size_t) :: lcname
133 character(kind=c_char,len=1),
allocatable :: cname(:)
137 allocate(cname(lcname+1))
139 int(
size(cname), c_size_t), cname)
140 call c_f_string(cname, varname)
151 character(MAXVARLEN),
allocatable ::
varlist(:)
154 allocate(
varlist(this%nvars()))
156 do jj = 1, this%nvars()
157 varlist(jj) = this%variable(jj)
163 logical function has(this, var)
164 use iso_c_binding,
only: c_char
169 character(*),
intent(in) :: var
171 character(kind=c_char,len=1),
allocatable :: c_var(:)
173 call f_c_string(trim(var), c_var)
Define interface for C++ Variables code called from Fortran.
Fortran interface to Variables.
type(oops_variables) function ctor_from_ptr(ptr)
character(maxvarlen) function, dimension(:), allocatable varlist(this)
character(maxvarlen) function variable(this, jj)
subroutine push_back_string(this, varname)
subroutine destruct(this)
integer, parameter, private maxvarlen
logical function has(this, var)
integer function nvars(this)
subroutine push_back_vector(this, varnames)
type(oops_variables) function empty_ctor()