39 use,
intrinsic :: iso_c_binding
45 kim_support_status_type, &
65 type, bind(c) :: kim_support_status_type
72 integer(c_int) :: support_status_id
73 end type kim_support_status_type
80 type(kim_support_status_type),
protected,
save, &
81 bind(c, name=
"KIM_SUPPORT_STATUS_requiredByAPI") &
89 type(kim_support_status_type),
protected,
save, &
90 bind(c, name=
"KIM_SUPPORT_STATUS_notSupported") &
98 type(kim_support_status_type),
protected,
save, &
99 bind(c, name=
"KIM_SUPPORT_STATUS_required") &
107 type(kim_support_status_type),
protected,
save, &
108 bind(c, name=
"KIM_SUPPORT_STATUS_optional") &
117 module procedure kim_support_status_known
118 end interface kim_known
125 interface operator(.eq.)
126 module procedure kim_support_status_equal
127 end interface operator(.eq.)
134 interface operator(.ne.)
135 module procedure kim_support_status_not_equal
136 end interface operator(.ne.)
144 interface kim_from_string
145 module procedure kim_support_status_from_string
146 end interface kim_from_string
153 interface kim_to_string
154 module procedure kim_support_status_to_string
155 end interface kim_to_string
163 logical recursive function kim_support_status_known(support_status)
166 integer(c_int) recursive function known(support_status) &
167 bind(c, name=
"KIM_SupportStatus_Known")
168 use,
intrinsic :: iso_c_binding
169 import kim_support_status_type
171 type(kim_support_status_type),
intent(in),
value :: support_status
174 type(kim_support_status_type),
intent(in) :: support_status
176 kim_support_status_known = (known(support_status) /= 0)
177 end function kim_support_status_known
184 logical recursive function kim_support_status_equal(lhs, rhs)
186 type(kim_support_status_type),
intent(in) :: lhs
187 type(kim_support_status_type),
intent(in) :: rhs
189 kim_support_status_equal &
190 = (lhs%support_status_id == rhs%support_status_id)
191 end function kim_support_status_equal
198 logical recursive function kim_support_status_not_equal(lhs, rhs)
200 type(kim_support_status_type),
intent(in) :: lhs
201 type(kim_support_status_type),
intent(in) :: rhs
203 kim_support_status_not_equal = .not. (lhs == rhs)
204 end function kim_support_status_not_equal
212 recursive subroutine kim_support_status_from_string(string, support_status)
215 type(kim_support_status_type)
recursive function from_string(string) &
216 bind(c, name=
"KIM_SupportStatus_FromString")
217 use,
intrinsic :: iso_c_binding
218 import kim_support_status_type
220 character(c_char),
intent(in) :: string(*)
221 end function from_string
223 character(len=*, kind=c_char),
intent(in) :: string
224 type(kim_support_status_type),
intent(out) :: support_status
226 support_status = from_string(trim(string)//c_null_char)
227 end subroutine kim_support_status_from_string
234 recursive subroutine kim_support_status_to_string(support_status, string)
235 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
238 type(c_ptr)
recursive function get_string(support_status) &
239 bind(c, name=
"KIM_SupportStatus_ToString")
240 use,
intrinsic :: iso_c_binding
241 import kim_support_status_type
243 type(kim_support_status_type),
intent(in),
value :: support_status
244 end function get_string
246 type(kim_support_status_type),
intent(in) :: support_status
247 character(len=*, kind=c_char),
intent(out) :: string
251 p = get_string(support_status)
252 call kim_convert_c_char_ptr_to_string(p, string)
253 end subroutine kim_support_status_to_string
262 number_of_support_statuses)
265 recursive subroutine get_number_of_support_statuses( &
266 number_of_support_statuses) &
267 bind(c, name=
"KIM_SUPPORT_STATUS_GetNumberOfSupportStatuses")
268 use,
intrinsic :: iso_c_binding
270 integer(c_int),
intent(out) :: number_of_support_statuses
271 end subroutine get_number_of_support_statuses
273 integer(c_int),
intent(out) :: number_of_support_statuses
275 call get_number_of_support_statuses(number_of_support_statuses)
287 integer(c_int) recursive function get_support_status(index, &
289 bind(c, name=
"KIM_SUPPORT_STATUS_GetSupportStatus")
290 use,
intrinsic :: iso_c_binding
291 import kim_support_status_type
293 integer(c_int),
intent(in),
value :: index
294 type(kim_support_status_type),
intent(out) :: support_status
295 end function get_support_status
297 integer(c_int),
intent(in) :: index
298 type(kim_support_status_type),
intent(out) :: support_status
299 integer(c_int),
intent(out) :: ierr
301 ierr = get_support_status(index - 1, support_status)
type(kim_support_status_type), save, public, protected kim_support_status_not_supported
recursive subroutine, public kim_get_support_status(index, support_status, ierr)
Get the identity of each defined standard SupportStatus.
recursive subroutine, public kim_get_number_of_support_statuses(number_of_support_statuses)
Get the number of standard SupportStatus's defined by the KIM API.
type(kim_support_status_type), save, public, protected kim_support_status_required_by_api
An Extensible Enumeration for the SupportStatus's supported by the KIM API.
type(kim_support_status_type), save, public, protected kim_support_status_optional
type(kim_support_status_type), save, public, protected kim_support_status_required