36 use,
intrinsic :: iso_c_binding
42 kim_model_destroy_handle_type, &
48 kim_get_model_buffer_pointer, &
57 type, bind(c) :: kim_model_destroy_handle_type
58 type(c_ptr) :: p = c_null_ptr
59 end type kim_model_destroy_handle_type
64 type(kim_model_destroy_handle_type),
protected,
save &
70 interface operator(.eq.)
71 module procedure kim_model_destroy_handle_equal
72 end interface operator(.eq.)
77 interface operator(.ne.)
78 module procedure kim_model_destroy_handle_not_equal
79 end interface operator(.ne.)
87 interface kim_get_model_buffer_pointer
88 module procedure kim_model_destroy_get_model_buffer_pointer
89 end interface kim_get_model_buffer_pointer
96 interface kim_log_entry
98 end interface kim_log_entry
105 interface kim_to_string
107 end interface kim_to_string
113 logical recursive function kim_model_destroy_handle_equal(lhs, rhs)
115 type(kim_model_destroy_handle_type),
intent(in) :: lhs
116 type(kim_model_destroy_handle_type),
intent(in) :: rhs
118 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 119 kim_model_destroy_handle_equal = .true.
121 kim_model_destroy_handle_equal = c_associated(lhs%p, rhs%p)
123 end function kim_model_destroy_handle_equal
128 logical recursive function kim_model_destroy_handle_not_equal(lhs, rhs)
130 type(kim_model_destroy_handle_type),
intent(in) :: lhs
131 type(kim_model_destroy_handle_type),
intent(in) :: rhs
133 kim_model_destroy_handle_not_equal = .not. (lhs == rhs)
134 end function kim_model_destroy_handle_not_equal
142 recursive subroutine kim_model_destroy_get_model_buffer_pointer( &
143 model_destroy_handle, ptr)
144 use kim_interoperable_types_module
, only: kim_model_destroy_type
147 recursive subroutine get_model_buffer_pointer(model_destroy, ptr) &
148 bind(c, name=
"KIM_ModelDestroy_GetModelBufferPointer")
149 use,
intrinsic :: iso_c_binding
150 use kim_interoperable_types_module
, only: kim_model_destroy_type
153 type(c_ptr),
intent(out) :: ptr
154 end subroutine get_model_buffer_pointer
156 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
157 type(c_ptr),
intent(out) :: ptr
162 end subroutine kim_model_destroy_get_model_buffer_pointer
170 log_verbosity, message)
172 use kim_interoperable_types_module
, only: kim_model_destroy_type
175 recursive subroutine log_entry( &
176 model_destroy, log_verbosity, message, line_number, file_name) &
177 bind(c, name=
"KIM_ModelDestroy_LogEntry")
178 use,
intrinsic :: iso_c_binding
180 use kim_interoperable_types_module
, only: kim_model_destroy_type
182 type(kim_model_destroy_type),
intent(in) :: model_destroy
183 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
184 character(c_char),
intent(in) :: message(*)
185 integer(c_int),
intent(in),
value :: line_number
186 character(c_char),
intent(in) :: file_name(*)
187 end subroutine log_entry
189 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
190 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
191 character(len=*, kind=c_char),
intent(in) :: message
192 type(kim_model_destroy_type),
pointer :: model_destroy
194 call c_f_pointer(model_destroy_handle%p, model_destroy)
195 call log_entry(model_destroy, log_verbosity, trim(message)//c_null_char, &
205 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
206 use kim_interoperable_types_module
, only: kim_model_destroy_type
209 type(c_ptr)
recursive function model_destroy_string(
model_destroy) &
210 bind(c, name=
"KIM_ModelDestroy_ToString")
211 use,
intrinsic :: iso_c_binding
212 use kim_interoperable_types_module
, only: kim_model_destroy_type
214 type(kim_model_destroy_type),
intent(in) :: model_destroy
215 end function model_destroy_string
217 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
218 character(len=*, kind=c_char),
intent(out) :: string
219 type(kim_model_destroy_type),
pointer :: model_destroy
225 call kim_convert_c_char_ptr_to_string(p, string)
Provides the interface to a KIM API Model object for use by models within their MODEL_ROUTINE_NAME::D...
recursive subroutine kim_model_destroy_to_string(model_destroy_handle, string)
Get a string representing the internal state of the Model object.
recursive subroutine kim_model_destroy_log_entry(model_destroy_handle, log_verbosity, message)
Write a log entry into the log file.
type(kim_model_destroy_handle_type), save, public, protected kim_model_destroy_null_handle
NULL handle for use in comparisons.
static int model_destroy(KIM_ModelDestroy *const modelDestroy)
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.