36 use,
intrinsic :: iso_c_binding
42 kim_model_routine_name_type, &
66 type, bind(c) :: kim_model_routine_name_type
73 integer(c_int) model_routine_name_id
74 end type kim_model_routine_name_type
81 type(kim_model_routine_name_type),
protected,
save, &
82 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Create") &
91 type(kim_model_routine_name_type),
protected,
save, &
92 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsCreate") &
100 type(kim_model_routine_name_type),
protected,
save, &
101 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Compute") &
109 type(kim_model_routine_name_type),
protected,
save, &
110 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Extension") &
118 type(kim_model_routine_name_type),
protected,
save, &
119 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Refresh") &
128 type(kim_model_routine_name_type),
protected,
save, &
129 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_WriteParameterizedModel") &
138 type(kim_model_routine_name_type),
protected,
save, &
139 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_ComputeArgumentsDestroy") &
147 type(kim_model_routine_name_type),
protected,
save, &
148 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_Destroy") &
157 module procedure kim_model_routine_name_known
158 end interface kim_known
165 interface operator(.eq.)
166 module procedure kim_model_routine_name_equal
167 end interface operator(.eq.)
174 interface operator(.ne.)
175 module procedure kim_model_routine_name_not_equal
176 end interface operator(.ne.)
185 interface kim_from_string
186 module procedure kim_model_routine_name_from_string
187 end interface kim_from_string
194 interface kim_to_string
195 module procedure kim_model_routine_name_to_string
196 end interface kim_to_string
204 logical recursive function kim_model_routine_name_known(model_routine_name)
207 integer(c_int) recursive function known(model_routine_name) &
208 bind(c, name=
"KIM_ModelRoutineName_Known")
209 use,
intrinsic :: iso_c_binding
210 import kim_model_routine_name_type
212 type(kim_model_routine_name_type),
intent(in),
value :: &
216 type(kim_model_routine_name_type),
intent(in) :: model_routine_name
218 kim_model_routine_name_known = (known(model_routine_name) /= 0)
219 end function kim_model_routine_name_known
226 logical recursive function kim_model_routine_name_equal(lhs, rhs)
228 type(kim_model_routine_name_type),
intent(in) :: lhs
229 type(kim_model_routine_name_type),
intent(in) :: rhs
231 kim_model_routine_name_equal &
232 = (lhs%model_routine_name_id == rhs%model_routine_name_id)
233 end function kim_model_routine_name_equal
240 logical recursive function kim_model_routine_name_not_equal(lhs, rhs)
242 type(kim_model_routine_name_type),
intent(in) :: lhs
243 type(kim_model_routine_name_type),
intent(in) :: rhs
245 kim_model_routine_name_not_equal = .not. (lhs == rhs)
246 end function kim_model_routine_name_not_equal
255 recursive subroutine kim_model_routine_name_from_string(string, &
259 type(kim_model_routine_name_type)
recursive function from_string(string) &
260 bind(c, name=
"KIM_ModelRoutineName_FromString")
261 use,
intrinsic :: iso_c_binding
262 import kim_model_routine_name_type
264 character(c_char),
intent(in) :: string(*)
265 end function from_string
267 character(len=*, kind=c_char),
intent(in) :: string
268 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
270 model_routine_name = from_string(trim(string)//c_null_char)
271 end subroutine kim_model_routine_name_from_string
278 recursive subroutine kim_model_routine_name_to_string(model_routine_name, &
280 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
283 type(c_ptr)
recursive function get_string(model_routine_name) &
284 bind(c, name=
"KIM_ModelRoutineName_ToString")
285 use,
intrinsic :: iso_c_binding
286 import kim_model_routine_name_type
288 type(kim_model_routine_name_type),
intent(in),
value :: &
290 end function get_string
292 type(kim_model_routine_name_type),
intent(in) :: &
294 character(len=*, kind=c_char),
intent(out) :: string
298 p = get_string(model_routine_name)
299 call kim_convert_c_char_ptr_to_string(p, string)
300 end subroutine kim_model_routine_name_to_string
309 number_of_model_routine_names)
312 recursive subroutine get_number_of_model_routine_names( &
313 number_of_model_routine_names) &
314 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_GetNumberOfModelRoutineNames")
315 use,
intrinsic :: iso_c_binding
316 integer(c_int),
intent(out) :: number_of_model_routine_names
317 end subroutine get_number_of_model_routine_names
319 integer(c_int),
intent(out) :: number_of_model_routine_names
321 call get_number_of_model_routine_names(number_of_model_routine_names)
331 model_routine_name, ierr)
334 integer(c_int) recursive function get_model_routine_name( &
335 index, model_routine_name) &
336 bind(c, name=
"KIM_MODEL_ROUTINE_NAME_GetModelRoutineName")
337 use,
intrinsic :: iso_c_binding
338 import kim_model_routine_name_type
340 integer(c_int),
intent(in),
value :: index
341 type(kim_model_routine_name_type),
intent(out) :: &
343 end function get_model_routine_name
345 integer(c_int),
intent(in) :: index
346 type(kim_model_routine_name_type),
intent(out) :: model_routine_name
347 integer(c_int),
intent(out) :: ierr
349 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