40 use,
intrinsic :: iso_c_binding
46 kim_support_status_type, &
69 type, bind(c) :: kim_support_status_type
76 integer(c_int) :: support_status_id
77 end type kim_support_status_type
84 type(kim_support_status_type),
protected,
save, &
85 bind(c, name=
"KIM_SUPPORT_STATUS_requiredByAPI") &
93 type(kim_support_status_type),
protected,
save, &
94 bind(c, name=
"KIM_SUPPORT_STATUS_notSupported") &
102 type(kim_support_status_type),
protected,
save, &
103 bind(c, name=
"KIM_SUPPORT_STATUS_required") &
111 type(kim_support_status_type),
protected,
save, &
112 bind(c, name=
"KIM_SUPPORT_STATUS_optional") &
121 module procedure kim_support_status_known
122 end interface kim_known
129 interface operator (.eq.)
130 module procedure kim_support_status_equal
131 end interface operator (.eq.)
138 interface operator (.ne.)
139 module procedure kim_support_status_not_equal
140 end interface operator (.ne.)
148 interface kim_from_string
149 module procedure kim_support_status_from_string
150 end interface kim_from_string
157 interface kim_to_string
158 module procedure kim_support_status_to_string
159 end interface kim_to_string
167 logical recursive function kim_support_status_known(support_status)
170 integer(c_int) recursive function known(support_status) &
171 bind(c, name=
"KIM_SupportStatus_Known")
172 use,
intrinsic :: iso_c_binding
173 import kim_support_status_type
175 type(kim_support_status_type),
intent(in),
value :: support_status
178 type(kim_support_status_type),
intent(in) :: support_status
180 kim_support_status_known = (known(support_status) /= 0)
181 end function kim_support_status_known
188 logical recursive function kim_support_status_equal(lhs, rhs)
190 type(kim_support_status_type),
intent(in) :: lhs
191 type(kim_support_status_type),
intent(in) :: rhs
193 kim_support_status_equal &
194 = (lhs%support_status_id .eq. rhs%support_status_id)
195 end function kim_support_status_equal
202 logical recursive function kim_support_status_not_equal(lhs, rhs)
204 type(kim_support_status_type),
intent(in) :: lhs
205 type(kim_support_status_type),
intent(in) :: rhs
207 kim_support_status_not_equal = .not. (lhs .eq. rhs)
208 end function kim_support_status_not_equal
216 recursive subroutine kim_support_status_from_string(string, support_status)
219 type(kim_support_status_type)
recursive function from_string(string) &
220 bind(c, name=
"KIM_SupportStatus_FromString")
221 use,
intrinsic :: iso_c_binding
222 import kim_support_status_type
224 character(c_char),
intent(in) :: string(*)
225 end function from_string
227 character(len=*, kind=c_char),
intent(in) :: string
228 type(kim_support_status_type),
intent(out) :: support_status
230 support_status = from_string(trim(string)//c_null_char)
231 end subroutine kim_support_status_from_string
238 recursive subroutine kim_support_status_to_string(support_status, string)
239 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
242 type(c_ptr)
recursive function get_string(support_status) &
243 bind(c, name=
"KIM_SupportStatus_ToString")
244 use,
intrinsic :: iso_c_binding
245 import kim_support_status_type
247 type(kim_support_status_type),
intent(in),
value :: support_status
248 end function get_string
250 type(kim_support_status_type),
intent(in) :: support_status
251 character(len=*, kind=c_char),
intent(out) :: string
255 p = get_string(support_status)
256 call kim_convert_c_char_ptr_to_string(p, string)
257 end subroutine kim_support_status_to_string
266 number_of_support_statuses)
269 recursive subroutine get_number_of_support_statuses( &
270 number_of_support_statuses) &
271 bind(c, name=
"KIM_SUPPORT_STATUS_GetNumberOfSupportStatuses")
272 use,
intrinsic :: iso_c_binding
274 integer(c_int),
intent(out) :: number_of_support_statuses
275 end subroutine get_number_of_support_statuses
277 integer(c_int),
intent(out) :: number_of_support_statuses
279 call get_number_of_support_statuses(number_of_support_statuses)
291 integer(c_int) recursive function get_support_status(index, &
292 support_status) bind(c, name="KIM_SUPPORT_STATUS_GetSupportStatus")
293 use,
intrinsic :: iso_c_binding
294 import kim_support_status_type
296 integer(c_int),
intent(in),
value :: index
297 type(kim_support_status_type),
intent(out) :: support_status
298 end function get_support_status
300 integer(c_int),
intent(in) :: index
301 type(kim_support_status_type),
intent(out) :: support_status
302 integer(c_int),
intent(out) :: ierr
304 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