40 use,
intrinsic :: iso_c_binding
46 kim_model_destroy_handle_type, &
54 kim_get_model_buffer_pointer, &
64 type, bind(c) :: kim_model_destroy_handle_type
65 type(c_ptr) :: p = c_null_ptr
66 end type kim_model_destroy_handle_type
71 type(kim_model_destroy_handle_type),
protected,
save &
77 interface operator (.eq.)
78 module procedure kim_model_destroy_handle_equal
79 end interface operator (.eq.)
84 interface operator (.ne.)
85 module procedure kim_model_destroy_handle_not_equal
86 end interface operator (.ne.)
94 interface kim_get_model_buffer_pointer
95 module procedure kim_model_destroy_get_model_buffer_pointer
96 end interface kim_get_model_buffer_pointer
103 interface kim_log_entry
105 end interface kim_log_entry
112 interface kim_to_string
114 end interface kim_to_string
120 logical recursive function kim_model_destroy_handle_equal(lhs, rhs)
122 type(kim_model_destroy_handle_type),
intent(in) :: lhs
123 type(kim_model_destroy_handle_type),
intent(in) :: rhs
125 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 126 kim_model_destroy_handle_equal = .true.
128 kim_model_destroy_handle_equal = c_associated(lhs%p, rhs%p)
130 end function kim_model_destroy_handle_equal
135 logical recursive function kim_model_destroy_handle_not_equal(lhs, rhs)
137 type(kim_model_destroy_handle_type),
intent(in) :: lhs
138 type(kim_model_destroy_handle_type),
intent(in) :: rhs
140 kim_model_destroy_handle_not_equal = .not. (lhs .eq. rhs)
141 end function kim_model_destroy_handle_not_equal
149 recursive subroutine kim_model_destroy_get_model_buffer_pointer( &
150 model_destroy_handle, ptr)
151 use kim_interoperable_types_module
, only : kim_model_destroy_type
154 recursive subroutine get_model_buffer_pointer(model_destroy, ptr) &
155 bind(c, name=
"KIM_ModelDestroy_GetModelBufferPointer")
156 use,
intrinsic :: iso_c_binding
157 use kim_interoperable_types_module
, only : kim_model_destroy_type
160 type(c_ptr),
intent(out) :: ptr
161 end subroutine get_model_buffer_pointer
163 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
164 type(c_ptr),
intent(out) :: ptr
169 end subroutine kim_model_destroy_get_model_buffer_pointer
177 log_verbosity, message)
179 use kim_interoperable_types_module
, only : kim_model_destroy_type
182 recursive subroutine log_entry(model_destroy, log_verbosity, message, &
183 line_number, file_name) bind(c, name="KIM_ModelDestroy_LogEntry")
184 use,
intrinsic :: iso_c_binding
186 use kim_interoperable_types_module
, only : kim_model_destroy_type
188 type(kim_model_destroy_type),
intent(in) :: model_destroy
189 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
190 character(c_char),
intent(in) :: message(*)
191 integer(c_int),
intent(in),
value :: line_number
192 character(c_char),
intent(in) :: file_name(*)
193 end subroutine log_entry
195 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
196 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
197 character(len=*, kind=c_char),
intent(in) :: message
198 type(kim_model_destroy_type),
pointer :: model_destroy
200 call c_f_pointer(model_destroy_handle%p, model_destroy)
201 call log_entry(model_destroy, log_verbosity, trim(message)//c_null_char, &
211 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
212 use kim_interoperable_types_module
, only : kim_model_destroy_type
215 type(c_ptr)
recursive function model_destroy_string(
model_destroy) &
216 bind(c, name=
"KIM_ModelDestroy_ToString")
217 use,
intrinsic :: iso_c_binding
218 use kim_interoperable_types_module
, only : kim_model_destroy_type
220 type(kim_model_destroy_type),
intent(in) :: model_destroy
221 end function model_destroy_string
223 type(kim_model_destroy_handle_type),
intent(in) :: model_destroy_handle
224 character(len=*, kind=c_char),
intent(out) :: string
225 type(kim_model_destroy_type),
pointer :: model_destroy
229 call c_f_pointer(model_destroy_handle%p, model_destroy)
230 p = model_destroy_string(model_destroy)
231 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.