36 use,
intrinsic :: iso_c_binding
42 kim_support_status_type, &
62 type, bind(c) :: kim_support_status_type
69 integer(c_int) :: support_status_id
70 end type kim_support_status_type
77 type(kim_support_status_type),
protected,
save, &
78 bind(c, name=
"KIM_SUPPORT_STATUS_requiredByAPI") &
86 type(kim_support_status_type),
protected,
save, &
87 bind(c, name=
"KIM_SUPPORT_STATUS_notSupported") &
95 type(kim_support_status_type),
protected,
save, &
96 bind(c, name=
"KIM_SUPPORT_STATUS_required") &
104 type(kim_support_status_type),
protected,
save, &
105 bind(c, name=
"KIM_SUPPORT_STATUS_optional") &
114 module procedure kim_support_status_known
115 end interface kim_known
122 interface operator(.eq.)
123 module procedure kim_support_status_equal
124 end interface operator(.eq.)
131 interface operator(.ne.)
132 module procedure kim_support_status_not_equal
133 end interface operator(.ne.)
141 interface kim_from_string
142 module procedure kim_support_status_from_string
143 end interface kim_from_string
150 interface kim_to_string
151 module procedure kim_support_status_to_string
152 end interface kim_to_string
160 logical recursive function kim_support_status_known(support_status)
163 integer(c_int) recursive function known(support_status) &
164 bind(c, name=
"KIM_SupportStatus_Known")
165 use,
intrinsic :: iso_c_binding
166 import kim_support_status_type
168 type(kim_support_status_type),
intent(in),
value :: support_status
171 type(kim_support_status_type),
intent(in) :: support_status
173 kim_support_status_known = (known(support_status) /= 0)
174 end function kim_support_status_known
181 logical recursive function kim_support_status_equal(lhs, rhs)
183 type(kim_support_status_type),
intent(in) :: lhs
184 type(kim_support_status_type),
intent(in) :: rhs
186 kim_support_status_equal &
187 = (lhs%support_status_id == rhs%support_status_id)
188 end function kim_support_status_equal
195 logical recursive function kim_support_status_not_equal(lhs, rhs)
197 type(kim_support_status_type),
intent(in) :: lhs
198 type(kim_support_status_type),
intent(in) :: rhs
200 kim_support_status_not_equal = .not. (lhs == rhs)
201 end function kim_support_status_not_equal
209 recursive subroutine kim_support_status_from_string(string, support_status)
212 type(kim_support_status_type)
recursive function from_string(string) &
213 bind(c, name=
"KIM_SupportStatus_FromString")
214 use,
intrinsic :: iso_c_binding
215 import kim_support_status_type
217 character(c_char),
intent(in) :: string(*)
218 end function from_string
220 character(len=*, kind=c_char),
intent(in) :: string
221 type(kim_support_status_type),
intent(out) :: support_status
223 support_status = from_string(trim(string)//c_null_char)
224 end subroutine kim_support_status_from_string
231 recursive subroutine kim_support_status_to_string(support_status, string)
232 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
235 type(c_ptr)
recursive function get_string(support_status) &
236 bind(c, name=
"KIM_SupportStatus_ToString")
237 use,
intrinsic :: iso_c_binding
238 import kim_support_status_type
240 type(kim_support_status_type),
intent(in),
value :: support_status
241 end function get_string
243 type(kim_support_status_type),
intent(in) :: support_status
244 character(len=*, kind=c_char),
intent(out) :: string
248 p = get_string(support_status)
249 call kim_convert_c_char_ptr_to_string(p, string)
250 end subroutine kim_support_status_to_string
259 number_of_support_statuses)
262 recursive subroutine get_number_of_support_statuses( &
263 number_of_support_statuses) &
264 bind(c, name=
"KIM_SUPPORT_STATUS_GetNumberOfSupportStatuses")
265 use,
intrinsic :: iso_c_binding
267 integer(c_int),
intent(out) :: number_of_support_statuses
268 end subroutine get_number_of_support_statuses
270 integer(c_int),
intent(out) :: number_of_support_statuses
272 call get_number_of_support_statuses(number_of_support_statuses)
284 integer(c_int) recursive function get_support_status(index, &
286 bind(c, name=
"KIM_SUPPORT_STATUS_GetSupportStatus")
287 use,
intrinsic :: iso_c_binding
288 import kim_support_status_type
290 integer(c_int),
intent(in),
value :: index
291 type(kim_support_status_type),
intent(out) :: support_status
292 end function get_support_status
294 integer(c_int),
intent(in) :: index
295 type(kim_support_status_type),
intent(out) :: support_status
296 integer(c_int),
intent(out) :: ierr
298 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