39 use,
intrinsic :: iso_c_binding
45 kim_language_name_type, &
64 type, bind(c) :: kim_language_name_type
70 integer(c_int) :: language_name_id
71 end type kim_language_name_type
78 type(kim_language_name_type),
protected,
save, &
79 bind(c, name=
"KIM_LANGUAGE_NAME_cpp") &
87 type(kim_language_name_type),
protected,
save, &
88 bind(c, name=
"KIM_LANGUAGE_NAME_c") &
96 type(kim_language_name_type),
protected,
save, &
97 bind(c, name=
"KIM_LANGUAGE_NAME_fortran") &
106 module procedure kim_language_name_known
107 end interface kim_known
114 interface operator(.eq.)
115 module procedure kim_language_name_equal
116 end interface operator(.eq.)
123 interface operator(.ne.)
124 module procedure kim_language_name_not_equal
125 end interface operator(.ne.)
133 interface kim_from_string
134 module procedure kim_language_name_from_string
135 end interface kim_from_string
142 interface kim_to_string
143 module procedure kim_language_name_to_string
144 end interface kim_to_string
152 logical recursive function kim_language_name_known(language_name)
155 integer(c_int) recursive function known(language_name) &
156 bind(c, name=
"KIM_LanguageName_Known")
157 use,
intrinsic :: iso_c_binding
158 import kim_language_name_type
160 type(kim_language_name_type),
intent(in),
value :: language_name
163 type(kim_language_name_type),
intent(in) :: language_name
165 kim_language_name_known = (known(language_name) /= 0)
166 end function kim_language_name_known
173 logical recursive function kim_language_name_equal(lhs, rhs)
175 type(kim_language_name_type),
intent(in) :: lhs
176 type(kim_language_name_type),
intent(in) :: rhs
178 kim_language_name_equal &
179 = (lhs%language_name_id == rhs%language_name_id)
180 end function kim_language_name_equal
187 logical recursive function kim_language_name_not_equal(lhs, rhs)
189 type(kim_language_name_type),
intent(in) :: lhs
190 type(kim_language_name_type),
intent(in) :: rhs
192 kim_language_name_not_equal = .not. (lhs == rhs)
193 end function kim_language_name_not_equal
201 recursive subroutine kim_language_name_from_string(string, language_name)
204 type(kim_language_name_type)
recursive function from_string(string) &
205 bind(c, name=
"KIM_LanguageName_FromString")
206 use,
intrinsic :: iso_c_binding
207 import kim_language_name_type
209 character(c_char),
intent(in) :: string(*)
210 end function from_string
212 character(len=*, kind=c_char),
intent(in) :: string
213 type(kim_language_name_type),
intent(out) :: language_name
215 language_name = from_string(trim(string)//c_null_char)
216 end subroutine kim_language_name_from_string
223 recursive subroutine kim_language_name_to_string(language_name, string)
224 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
227 type(c_ptr)
recursive function get_string(language_name) &
228 bind(c, name=
"KIM_LanguageName_ToString")
229 use,
intrinsic :: iso_c_binding
230 import kim_language_name_type
232 type(kim_language_name_type),
intent(in),
value :: language_name
233 end function get_string
235 type(kim_language_name_type),
intent(in) :: language_name
236 character(len=*, kind=c_char),
intent(out) :: string
240 p = get_string(language_name)
241 call kim_convert_c_char_ptr_to_string(p, string)
242 end subroutine kim_language_name_to_string
251 number_of_language_names)
254 recursive subroutine get_number_of_language_names( &
255 number_of_language_names) &
256 bind(c, name=
"KIM_LANGUAGE_NAME_GetNumberOfLanguageNames")
257 use,
intrinsic :: iso_c_binding
258 integer(c_int),
intent(out) :: number_of_language_names
259 end subroutine get_number_of_language_names
261 integer(c_int),
intent(out) :: number_of_language_names
263 call get_number_of_language_names(number_of_language_names)
274 integer(c_int) recursive function get_language_name(index, &
276 bind(c, name=
"KIM_LANGUAGE_NAME_GetLanguageName")
277 use,
intrinsic :: iso_c_binding
278 import kim_language_name_type
279 integer(c_int),
intent(in),
value :: index
280 type(kim_language_name_type),
intent(out) :: language_name
281 end function get_language_name
283 integer(c_int),
intent(in) :: index
284 type(kim_language_name_type),
intent(out) :: language_name
285 integer(c_int),
intent(out) :: ierr
287 ierr = get_language_name(index - 1, language_name)
type(kim_language_name_type), save, public, protected kim_language_name_cpp
recursive subroutine, public kim_get_number_of_language_names(number_of_language_names)
Get the number of standard LanguageName's defined by the KIM API.
recursive subroutine, public kim_get_language_name(index, language_name, ierr)
Get the identity of each defined standard LanguageName.
type(kim_language_name_type), save, public, protected kim_language_name_c
An Extensible Enumeration for the LanguageName's supported by the KIM API.
type(kim_language_name_type), save, public, protected kim_language_name_fortran