36 use,
intrinsic :: iso_c_binding
61 type,
bind(c) :: kim_language_name_type
67 integer(c_int) :: language_name_id
76 bind(c, name="KIM_LANGUAGE_NAME_cpp") &
85 bind(c, name="KIM_LANGUAGE_NAME_c") &
94 bind(c, name="KIM_LANGUAGE_NAME_fortran") &
103 module procedure kim_language_name_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.)
131 module procedure kim_language_name_from_string
140 module procedure kim_language_name_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
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
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
229 type(kim_language_name_type),
intent(in),
value :: language_name
232 type(kim_language_name_type),
intent(in) :: language_name
233 character(len=*, kind=c_char),
intent(out) :: string
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
276 integer(c_int),
intent(in),
value :: index
278 end function get_language_name
280 integer(c_int),
intent(in) :: index
282 integer(c_int),
intent(out) :: ierr
284 ierr = get_language_name(index - 1, language_name)
Create a LanguageName object corresponding to the provided string. If the string does not match one o...
Determines if the object is a quantity known to the KIM API.
Converts the object to a string.
An Extensible Enumeration for the LanguageName's supported by the KIM API.
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, bind(C, name="KIM_LANGUAGE_NAME_cpp"), public, protected kim_language_name_cpp
The standard cpp language.
type(kim_language_name_type), save, bind(C, name="KIM_LANGUAGE_NAME_c"), public, protected kim_language_name_c
The standard c language.
type(kim_language_name_type), save, bind(C, name="KIM_LANGUAGE_NAME_fortran"), public, protected kim_language_name_fortran
The standard fortran language.
An Extensible Enumeration for the LanguageName's supported by the KIM API.