39 use,
intrinsic :: iso_c_binding
45 kim_model_routine_name_type, &
69 type, bind(c) :: kim_model_routine_name_type
76 integer(c_int) model_routine_name_id
77 end type kim_model_routine_name_type
84 type(kim_model_routine_name_type),
protected,
save, &
85 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Create") &
94 type(kim_model_routine_name_type),
protected,
save, &
95 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsCreate") &
103 type(kim_model_routine_name_type),
protected,
save, &
104 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Compute") &
112 type(kim_model_routine_name_type),
protected,
save, &
113 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Extension") &
121 type(kim_model_routine_name_type),
protected,
save, &
122 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Refresh") &
131 type(kim_model_routine_name_type),
protected,
save, &
132 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_WriteParameterizedModel") &
141 type(kim_model_routine_name_type),
protected,
save, &
142 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsDestroy") &
150 type(kim_model_routine_name_type),
protected,
save, &
151 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Destroy") &
160 module procedure kim_model_routine_name_known
161 end interface kim_known
168 interface operator(.eq.)
169 module procedure kim_model_routine_name_equal
170 end interface operator(.eq.)
177 interface operator(.ne.)
178 module procedure kim_model_routine_name_not_equal
179 end interface operator(.ne.)
188 interface kim_from_string
189 module procedure kim_model_routine_name_from_string
190 end interface kim_from_string
197 interface kim_to_string
198 module procedure kim_model_routine_name_to_string
199 end interface kim_to_string
207 logical recursive function kim_model_routine_name_known(model_routine_name)
210 integer(c_int) recursive function known(model_routine_name) &
211 bind(c, name=
"KIM_ModelRoutineName_Known")
212 use,
intrinsic :: iso_c_binding
213 import kim_model_routine_name_type
215 type(kim_model_routine_name_type),
intent(in),
value :: &
219 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
221 kim_model_routine_name_known = (known(model_routine_name) /= 0)
222 end function kim_model_routine_name_known
229 logical recursive function kim_model_routine_name_equal(lhs, rhs)
231 type(kim_model_routine_name_type),
intent(in) :: lhs
232 type(kim_model_routine_name_type),
intent(in) :: rhs
234 kim_model_routine_name_equal &
235 = (lhs%model_routine_name_id == rhs%model_routine_name_id)
236 end function kim_model_routine_name_equal
243 logical recursive function kim_model_routine_name_not_equal(lhs, rhs)
245 type(kim_model_routine_name_type),
intent(in) :: lhs
246 type(kim_model_routine_name_type),
intent(in) :: rhs
248 kim_model_routine_name_not_equal = .not. (lhs == rhs)
249 end function kim_model_routine_name_not_equal
258 recursive subroutine kim_model_routine_name_from_string(string, &
262 type(kim_model_routine_name_type)
recursive function from_string(string) &
263 bind(c, name=
"KIM_ModelRoutineName_FromString")
264 use,
intrinsic :: iso_c_binding
265 import kim_model_routine_name_type
267 character(c_char),
intent(in) :: string(*)
268 end function from_string
270 character(len=*, kind=c_char),
intent(in) :: string
271 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
273 model_routine_name = from_string(trim(string)//c_null_char)
274 end subroutine kim_model_routine_name_from_string
281 recursive subroutine kim_model_routine_name_to_string(model_routine_name, &
283 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
286 type(c_ptr)
recursive function get_string(model_routine_name) &
287 bind(c, name=
"KIM_ModelRoutineName_ToString")
288 use,
intrinsic :: iso_c_binding
289 import kim_model_routine_name_type
291 type(kim_model_routine_name_type),
intent(in),
value :: &
293 end function get_string
295 type(kim_model_routine_name_type),
intent(in) :: &
297 character(len=*, kind=c_char),
intent(out) :: string
301 p = get_string(model_routine_name)
302 call kim_convert_c_char_ptr_to_string(p, string)
303 end subroutine kim_model_routine_name_to_string
312 number_of_model_routine_names)
315 recursive subroutine get_number_of_model_routine_names( &
316 number_of_model_routine_names) &
317 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_GetNumberOfModelRoutineNames")
318 use,
intrinsic :: iso_c_binding
319 integer(c_int),
intent(out) :: number_of_model_routine_names
320 end subroutine get_number_of_model_routine_names
322 integer(c_int),
intent(out) :: number_of_model_routine_names
324 call get_number_of_model_routine_names(number_of_model_routine_names)
334 model_routine_name, ierr)
337 integer(c_int) recursive function get_model_routine_name( &
338 index, model_routine_name) &
339 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_GetModelRoutineName")
340 use,
intrinsic :: iso_c_binding
341 import kim_model_routine_name_type
343 integer(c_int),
intent(in),
value :: index
344 type(kim_model_routine_name_type),
intent(out) :: &
346 end function get_model_routine_name
348 integer(c_int),
intent(in) :: index
349 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
350 integer(c_int),
intent(out) :: ierr
352 ierr = get_model_routine_name(index - 1, model_routine_name)
recursive subroutine, public kim_get_number_of_model_routine_names(number_of_model_routine_names)
Get the number of standard ModelRoutineName's defined by the KIM API.
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_compute_arguments_create
An Extensible Enumeration for the ModelRoutineName's supported by the KIM API.
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_compute
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_refresh
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_destroy
recursive subroutine, public kim_get_model_routine_name(index, model_routine_name, ierr)
Get the identity of each defined standard ModelRoutineName.
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_compute_arguments_destroy
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_extension
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_create
type(kim_model_routine_name_type), save, public, protected kim_model_routine_name_write_parameterized_model