23 use,
intrinsic :: iso_fortran_env
48 character(kind=c_char),
intent(in) :: filename(*)
54 character(kind=c_char),
intent(in) :: name(*)
55 type(c_ptr),
intent(inout) :: var
58 subroutine varinfo_getinfo(var, name, type, default, section, desc)
bind(c)
61 type(c_ptr),
intent(in) :: var
62 type(c_ptr),
intent(out) :: name
63 type(c_ptr),
intent(out) :: type
64 type(c_ptr),
intent(out) :: default
65 type(c_ptr),
intent(out) :: section
66 type(c_ptr),
intent(out) :: desc
72 type(c_ptr),
intent(in) :: var
73 type(c_ptr),
intent(inout) :: opt
78 use,
intrinsic :: iso_fortran_env
80 type(c_ptr),
intent(in) :: opt
81 type(c_ptr),
intent(out) :: name
82 integer(c_int64_t),
intent(out) :: val
83 type(c_ptr),
intent(out) :: desc
89 character(kind=c_char),
intent(in) :: name(*)
90 type(c_ptr),
intent(inout) :: var
96 type(c_ptr),
intent(in) :: var
97 character(kind=c_char),
intent(in) :: name(*)
98 integer,
intent(out) :: val
99 integer,
intent(out) :: ierr
112 integer,
intent(in) :: iunit
113 character(len=*),
intent(in) :: var
114 integer,
optional,
intent(out):: ierr
116 type(c_ptr) :: handle, opt, name,
type, default, section, desc
117 integer(int64) :: val
122 if (.not. c_associated(handle))
then
123 if (
present(ierr))
then
127 write(iunit,
'(3a)')
'ERROR: Could not find a variable named ', trim(var),
'.'
132 if (
present(ierr)) ierr = 0
139 write(iunit,
'(a)')
"Description:"
146 if (.not. c_associated(opt))
then
150 write(iunit,
'(a)')
"Available options:"
164 character(len=*),
intent(in) :: var
165 integer(int64),
intent(in) :: option
166 logical,
optional,
intent(in) :: is_flag
168 type(c_ptr) :: handle, opt, name, desc
169 integer(int64) :: val, option_
173 if (
present(is_flag)) is_flag_ = is_flag
180 if (.not. c_associated(handle))
then
181 write(error_unit,
'(3a)')
'ERROR: Could not find a variable named ', trim(var),
'.'
188 if (.not. c_associated(opt))
exit
192 option_ = iand(option_, not(val))
194 if (val == option_)
then
202 if (is_flag_ .and. (option_ == 0)) l = .
true.
209 character(len=*),
intent(in) :: var
210 integer,
intent(in) :: option
211 logical,
optional,
intent(in) :: is_flag
219 integer,
intent(in) :: iunit
220 character(len=*),
intent(in) :: var
221 integer,
intent(in) :: option
222 character(len=*),
intent(in),
optional :: pre
224 type(c_ptr) :: handle, opt, name, desc
225 integer(int64) :: val
226 logical :: option_found
227 character(kind=c_char) :: cvar(
c_str_len(var))
231 if (.not. c_associated(handle))
then
232 write(iunit,
'(3a)')
'ERROR: Could not find a variable named ', trim(var),
'.'
236 option_found = .false.
240 if (.not. c_associated(opt))
exit
244 if (val == int(option, int64))
then
245 option_found = .
true.
250 write(iunit,
'(4a)', advance=
'no')
"Input:",
' [', var,
' = '
252 if (option_found)
then
255 write(iunit,
'(i6,a)', advance=
'no') option,
" (INVALID)"
257 write(iunit,
'(a)', advance=
'no')
']'
258 if (
present(pre))
then
259 write(iunit,
'(3a)')
' (', trim(pre),
')'
266 if (.not. option_found)
then
268 write(iunit,
'(a,i6,2a)')
"ERROR: invalid option ", option,
" for variable ", trim(var)
276 integer,
intent(in) :: iunit
277 character(len=*),
intent(in) :: var
278 integer,
optional,
intent(out):: ierr
280 type(c_ptr) :: handle, name,
type, default, section, desc
283 if (
present(ierr)) ierr = -1
287 if (c_associated(handle))
then
288 if (
present(ierr)) ierr = 0
302 character(len=*),
intent(in) :: var
303 character(len=*),
intent(in) :: option
305 type(c_ptr) :: handle
314 write(error_unit,
'(4a)')
"ERROR: invalid option ", trim(option),
" for variable ", trim(var)
323 character(len=*),
intent(in) :: var
325 character(kind=c_char) :: cvar(
c_str_len(var))
326 type(c_ptr) :: handle
333 exists = c_associated(handle)
character(kind=c_char, len=1) function, dimension(:), allocatable, public string_f_to_c(f_string)
convert a Fortran string to a C string
subroutine, public print_c_string(iunit, str, pre, advance)
prints the C string given by the pointer str
integer pure function, public c_str_len(fortran_char)
Convert fortran character length to C character length.
subroutine, public varinfo_print_option(iunit, var, option, pre)
logical function varinfo_valid_option_8(var, option, is_flag)
subroutine, public varinfo_print(iunit, var, ierr)
logical function varinfo_valid_option_4(var, option, is_flag)
subroutine, public varinfo_search(iunit, var, ierr)
logical function, public varinfo_exists(var)
integer function, public varinfo_option(var, option)