36 use,
intrinsic :: iso_c_binding
42 kim_language_name_type, &
61 type, bind(c) :: kim_language_name_type
67 integer(c_int) :: language_name_id
68 end type kim_language_name_type
75 type(kim_language_name_type),
protected,
save, &
76 bind(c, name=
"KIM_LANGUAGE_NAME_cpp") &
84 type(kim_language_name_type),
protected,
save, &
85 bind(c, name=
"KIM_LANGUAGE_NAME_c") &
93 type(kim_language_name_type),
protected,
save, &
94 bind(c, name=
"KIM_LANGUAGE_NAME_fortran") &
103 module procedure kim_language_name_known
104 end interface kim_known
111 interface operator(.eq.)
112 module procedure kim_language_name_equal
113 end interface operator(.eq.)
120 interface operator(.ne.)
121 module procedure kim_language_name_not_equal
122 end interface operator(.ne.)
130 interface kim_from_string
131 module procedure kim_language_name_from_string
132 end interface kim_from_string
139 interface kim_to_string
140 module procedure kim_language_name_to_string
141 end interface kim_to_string
149 logical recursive function kim_language_name_known(language_name)
152 integer(c_int) recursive function known(language_name) &
153 bind(c, name=
"KIM_LanguageName_Known")
154 use,
intrinsic :: iso_c_binding
155 import kim_language_name_type
157 type(kim_language_name_type),
intent(in),
value :: language_name
160 type(kim_language_name_type),
intent(in) :: language_name
162 kim_language_name_known = (known(language_name) /= 0)
163 end function kim_language_name_known
170 logical recursive function kim_language_name_equal(lhs, rhs)
172 type(kim_language_name_type),
intent(in) :: lhs
173 type(kim_language_name_type),
intent(in) :: rhs
175 kim_language_name_equal &
176 = (lhs%language_name_id == rhs%language_name_id)
177 end function kim_language_name_equal
184 logical recursive function kim_language_name_not_equal(lhs, rhs)
186 type(kim_language_name_type),
intent(in) :: lhs
187 type(kim_language_name_type),
intent(in) :: rhs
189 kim_language_name_not_equal = .not. (lhs == rhs)
190 end function kim_language_name_not_equal
198 recursive subroutine kim_language_name_from_string(string, language_name)
201 type(kim_language_name_type)
recursive function from_string(string) &
202 bind(c, name=
"KIM_LanguageName_FromString")
203 use,
intrinsic :: iso_c_binding
204 import kim_language_name_type
206 character(c_char),
intent(in) :: string(*)
207 end function from_string
209 character(len=*, kind=c_char),
intent(in) :: string
210 type(kim_language_name_type),
intent(out) :: language_name
212 language_name = from_string(trim(string)//c_null_char)
213 end subroutine kim_language_name_from_string
220 recursive subroutine kim_language_name_to_string(language_name, string)
221 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
224 type(c_ptr)
recursive function get_string(language_name) &
225 bind(c, name=
"KIM_LanguageName_ToString")
226 use,
intrinsic :: iso_c_binding
227 import kim_language_name_type
229 type(kim_language_name_type),
intent(in),
value :: language_name
230 end function get_string
232 type(kim_language_name_type),
intent(in) :: language_name
233 character(len=*, kind=c_char),
intent(out) :: string
237 p = get_string(language_name)
238 call kim_convert_c_char_ptr_to_string(p, string)
239 end subroutine kim_language_name_to_string
248 number_of_language_names)
251 recursive subroutine get_number_of_language_names( &
252 number_of_language_names) &
253 bind(c, name=
"KIM_LANGUAGE_NAME_GetNumberOfLanguageNames")
254 use,
intrinsic :: iso_c_binding
255 integer(c_int),
intent(out) :: number_of_language_names
256 end subroutine get_number_of_language_names
258 integer(c_int),
intent(out) :: number_of_language_names
260 call get_number_of_language_names(number_of_language_names)
271 integer(c_int) recursive function get_language_name(index, &
273 bind(c, name=
"KIM_LANGUAGE_NAME_GetLanguageName")
274 use,
intrinsic :: iso_c_binding
275 import kim_language_name_type
276 integer(c_int),
intent(in),
value :: index
277 type(kim_language_name_type),
intent(out) :: language_name
278 end function get_language_name
280 integer(c_int),
intent(in) :: index
281 type(kim_language_name_type),
intent(out) :: language_name
282 integer(c_int),
intent(out) :: ierr
284 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