40 use,
intrinsic :: iso_c_binding
46 kim_model_routine_name_type, &
73 type, bind(c) :: kim_model_routine_name_type
80 integer(c_int) model_routine_name_id
81 end type kim_model_routine_name_type
88 type(kim_model_routine_name_type),
protected,
save, &
89 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Create") &
98 type(kim_model_routine_name_type),
protected,
save, &
99 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsCreate") &
107 type(kim_model_routine_name_type),
protected,
save, &
108 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Compute") &
116 type(kim_model_routine_name_type),
protected,
save, &
117 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Extension") &
125 type(kim_model_routine_name_type),
protected,
save, &
126 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Refresh") &
135 type(kim_model_routine_name_type),
protected,
save, &
136 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_WriteParameterizedModel") &
145 type(kim_model_routine_name_type),
protected,
save, &
146 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsDestroy") &
154 type(kim_model_routine_name_type),
protected,
save, &
155 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Destroy") &
164 module procedure kim_model_routine_name_known
165 end interface kim_known
172 interface operator (.eq.)
173 module procedure kim_model_routine_name_equal
174 end interface operator (.eq.)
181 interface operator (.ne.)
182 module procedure kim_model_routine_name_not_equal
183 end interface operator (.ne.)
192 interface kim_from_string
193 module procedure kim_model_routine_name_from_string
194 end interface kim_from_string
201 interface kim_to_string
202 module procedure kim_model_routine_name_to_string
203 end interface kim_to_string
211 logical recursive function kim_model_routine_name_known(model_routine_name)
214 integer(c_int) recursive function known(model_routine_name) &
215 bind(c, name=
"KIM_ModelRoutineName_Known")
216 use,
intrinsic :: iso_c_binding
217 import kim_model_routine_name_type
219 type(kim_model_routine_name_type),
intent(in),
value :: &
223 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
225 kim_model_routine_name_known = (known(model_routine_name) /= 0)
226 end function kim_model_routine_name_known
233 logical recursive function kim_model_routine_name_equal(lhs, rhs)
235 type(kim_model_routine_name_type),
intent(in) :: lhs
236 type(kim_model_routine_name_type),
intent(in) :: rhs
238 kim_model_routine_name_equal &
239 = (lhs%model_routine_name_id .eq. rhs%model_routine_name_id)
240 end function kim_model_routine_name_equal
247 logical recursive function kim_model_routine_name_not_equal(lhs, rhs)
249 type(kim_model_routine_name_type),
intent(in) :: lhs
250 type(kim_model_routine_name_type),
intent(in) :: rhs
252 kim_model_routine_name_not_equal = .not. (lhs .eq. rhs)
253 end function kim_model_routine_name_not_equal
262 recursive subroutine kim_model_routine_name_from_string(string, &
266 type(kim_model_routine_name_type)
recursive function from_string(string) &
267 bind(c, name=
"KIM_ModelRoutineName_FromString")
268 use,
intrinsic :: iso_c_binding
269 import kim_model_routine_name_type
271 character(c_char),
intent(in) :: string(*)
272 end function from_string
274 character(len=*, kind=c_char),
intent(in) :: string
275 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
277 model_routine_name = from_string(trim(string)//c_null_char)
278 end subroutine kim_model_routine_name_from_string
285 recursive subroutine kim_model_routine_name_to_string(model_routine_name, &
287 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
290 type(c_ptr)
recursive function get_string(model_routine_name) &
291 bind(c, name=
"KIM_ModelRoutineName_ToString")
292 use,
intrinsic :: iso_c_binding
293 import kim_model_routine_name_type
295 type(kim_model_routine_name_type),
intent(in),
value :: &
297 end function get_string
299 type(kim_model_routine_name_type),
intent(in) :: &
301 character(len=*, kind=c_char),
intent(out) :: string
305 p = get_string(model_routine_name)
306 call kim_convert_c_char_ptr_to_string(p, string)
307 end subroutine kim_model_routine_name_to_string
316 number_of_model_routine_names)
319 recursive subroutine get_number_of_model_routine_names( &
320 number_of_model_routine_names) &
322 name=
"KIM_MODEL_ROUTINE_NAME_GetNumberOfModelRoutineNames")
323 use,
intrinsic :: iso_c_binding
324 integer(c_int),
intent(out) :: number_of_model_routine_names
325 end subroutine get_number_of_model_routine_names
327 integer(c_int),
intent(out) :: number_of_model_routine_names
329 call get_number_of_model_routine_names(number_of_model_routine_names)
339 model_routine_name, ierr)
342 integer(c_int) recursive function get_model_routine_name(index, &
343 model_routine_name) &
344 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_GetModelRoutineName")
345 use,
intrinsic :: iso_c_binding
346 import kim_model_routine_name_type
348 integer(c_int),
intent(in),
value :: index
349 type(kim_model_routine_name_type),
intent(out) :: &
351 end function get_model_routine_name
353 integer(c_int),
intent(in) :: index
354 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
355 integer(c_int),
intent(out) :: ierr
357 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