36 use,
intrinsic :: iso_c_binding
42 kim_log_handle_type, &
50 kim_push_default_verbosity, &
51 kim_pop_default_verbosity, &
52 kim_push_default_print_function, &
53 kim_pop_default_print_function, &
54 kim_convert_c_string, &
66 type, bind(c) :: kim_log_handle_type
67 type(c_ptr) :: p = c_null_ptr
68 end type kim_log_handle_type
73 type(kim_log_handle_type),
protected,
save &
79 interface operator(.eq.)
80 module procedure kim_log_handle_equal
81 end interface operator(.eq.)
86 interface operator(.ne.)
87 module procedure kim_log_handle_not_equal
88 end interface operator(.ne.)
95 interface kim_push_default_verbosity
96 module procedure kim_log_push_default_verbosity
97 end interface kim_push_default_verbosity
104 interface kim_pop_default_verbosity
106 end interface kim_pop_default_verbosity
113 interface kim_push_default_print_function
114 module procedure kim_log_push_default_print_function
115 end interface kim_push_default_print_function
122 interface kim_pop_default_print_function
124 end interface kim_pop_default_print_function
129 interface kim_convert_c_string
130 module procedure kim_log_convert_c_string
131 end interface kim_convert_c_string
140 end interface kim_get_id
149 end interface kim_set_id
156 interface kim_push_verbosity
158 end interface kim_push_verbosity
165 interface kim_pop_verbosity
167 end interface kim_pop_verbosity
174 interface kim_log_entry
176 end interface kim_log_entry
182 logical recursive function kim_log_handle_equal(lhs, rhs)
184 type(kim_log_handle_type),
intent(in) :: lhs
185 type(kim_log_handle_type),
intent(in) :: rhs
187 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then 188 kim_log_handle_equal = .true.
190 kim_log_handle_equal = c_associated(lhs%p, rhs%p)
192 end function kim_log_handle_equal
197 logical recursive function kim_log_handle_not_equal(lhs, rhs)
199 type(kim_log_handle_type),
intent(in) :: lhs
200 type(kim_log_handle_type),
intent(in) :: rhs
202 kim_log_handle_not_equal = .not. (lhs == rhs)
203 end function kim_log_handle_not_equal
213 integer(c_int) recursive function create(log) &
214 bind(c, name=
"KIM_Log_Create")
215 use,
intrinsic :: iso_c_binding
217 type(c_ptr),
intent(out) :: log
220 type(kim_log_handle_type),
intent(out) :: log_handle
221 integer(c_int),
intent(out) :: ierr
237 recursive subroutine destroy(log) bind(c, name="KIM_Log_Destroy")
238 use,
intrinsic :: iso_c_binding
240 type(c_ptr),
intent(inout) :: log
241 end subroutine destroy
243 type(kim_log_handle_type),
intent(inout) :: log_handle
248 log_handle%p = c_null_ptr
256 recursive subroutine kim_log_push_default_verbosity(log_verbosity)
260 recursive subroutine push_default_verbosity(log_verbosity) &
261 bind(c, name=
"KIM_Log_PushDefaultVerbosity")
262 use,
intrinsic :: iso_c_binding
265 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
266 end subroutine push_default_verbosity
268 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
270 call push_default_verbosity(log_verbosity)
271 end subroutine kim_log_push_default_verbosity
281 recursive subroutine pop_default_verbosity() &
282 bind(c, name=
"KIM_Log_PopDefaultVerbosity")
283 use,
intrinsic :: iso_c_binding
285 end subroutine pop_default_verbosity
288 call pop_default_verbosity()
334 recursive subroutine kim_log_push_default_print_function(language_name, fptr)
338 recursive subroutine push_default_print_function(language_name, fptr) &
339 bind(c, name=
"KIM_Log_PushDefaultPrintFunction")
340 use,
intrinsic :: iso_c_binding
343 type(kim_language_name_type),
intent(in),
value :: language_name
344 type(c_funptr),
intent(in),
value :: fptr
345 end subroutine push_default_print_function
347 type(kim_language_name_type),
intent(in) :: language_name
348 type(c_funptr),
intent(in),
value :: fptr
350 call push_default_print_function(language_name, fptr)
351 end subroutine kim_log_push_default_print_function
361 recursive subroutine pop_default_print_function() &
362 bind(c, name=
"KIM_Log_PopDefaultPrintFunction")
363 use,
intrinsic :: iso_c_binding
365 end subroutine pop_default_print_function
368 call pop_default_print_function()
380 recursive subroutine kim_log_convert_c_string(c_char_ptr, string)
381 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
383 type(c_ptr),
intent(in),
value :: c_char_ptr
384 character(len=*, kind=c_char),
intent(out) :: string
386 call kim_convert_c_char_ptr_to_string(c_char_ptr, string)
387 end subroutine kim_log_convert_c_string
395 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
396 use kim_interoperable_types_module
, only: kim_log_type
399 type(c_ptr)
recursive function get_id(log) bind(c, name=
"KIM_Log_GetID")
400 use,
intrinsic :: iso_c_binding
401 use kim_interoperable_types_module
, only: kim_log_type
403 type(kim_log_type),
intent(in) :: log
406 type(kim_log_handle_type),
intent(in) :: log_handle
407 character(len=*, kind=c_char),
intent(out) :: id_string
408 type(kim_log_type),
pointer :: log
412 call c_f_pointer(log_handle%p, log)
414 call kim_convert_c_char_ptr_to_string(p, id_string)
423 use kim_interoperable_types_module
, only: kim_log_type
426 recursive subroutine set_id(log, id_string) bind(c, name="KIM_Log_SetID")
427 use,
intrinsic :: iso_c_binding
428 use kim_interoperable_types_module
, only: kim_log_type
430 type(kim_log_type),
intent(in) :: log
431 character(c_char),
intent(in) :: id_string(*)
432 end subroutine set_id
434 type(kim_log_handle_type),
intent(in) :: log_handle
435 character(len=*, kind=c_char),
intent(in) :: id_string
436 type(kim_log_type),
pointer :: log
438 call c_f_pointer(log_handle%p, log)
439 call set_id(log, trim(id_string)//c_null_char)
449 use kim_interoperable_types_module
, only: kim_log_type
452 recursive subroutine push_verbosity(log, log_verbosity) &
453 bind(c, name=
"KIM_Log_PushVerbosity")
454 use,
intrinsic :: iso_c_binding
456 use kim_interoperable_types_module
, only: kim_log_type
458 type(kim_log_type),
intent(in) :: log
459 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
460 end subroutine push_verbosity
462 type(kim_log_handle_type),
intent(in) :: log_handle
463 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
464 type(kim_log_type),
pointer :: log
466 call c_f_pointer(log_handle%p, log)
467 call push_verbosity(log, log_verbosity)
476 use kim_interoperable_types_module
, only: kim_log_type
479 recursive subroutine pop_verbosity(log) &
480 bind(c, name=
"KIM_Log_PopVerbosity")
481 use,
intrinsic :: iso_c_binding
482 use kim_interoperable_types_module
, only: kim_log_type
484 type(kim_log_type),
intent(in) :: log
485 end subroutine pop_verbosity
487 type(kim_log_handle_type),
intent(in) :: log_handle
488 type(kim_log_type),
pointer :: log
490 call c_f_pointer(log_handle%p, log)
491 call pop_verbosity(log)
501 use kim_interoperable_types_module
, only: kim_log_type
504 recursive subroutine log_entry(log, log_verbosity, message, line_number, &
505 file_name) bind(c, name="KIM_Log_LogEntry")
506 use,
intrinsic :: iso_c_binding
508 use kim_interoperable_types_module
, only: kim_log_type
510 type(kim_log_type),
intent(in) :: log
511 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
512 character(c_char),
intent(in) :: message(*)
513 integer(c_int),
intent(in),
value :: line_number
514 character(c_char),
intent(in) :: file_name(*)
515 end subroutine log_entry
517 type(kim_log_handle_type),
intent(in) :: log_handle
518 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
519 character(len=*, kind=c_char),
intent(in) :: message
520 type(kim_log_type),
pointer :: log
522 call c_f_pointer(log_handle%p, log)
523 call log_entry(log, log_verbosity, trim(message)//c_null_char, &
recursive subroutine, public kim_log_create(log_handle, ierr)
Create a new KIM API Log object.
recursive subroutine kim_log_set_id(log_handle, id_string)
Set the identity of the Log object.
recursive subroutine, public kim_log_destroy(log_handle)
Destroy a previously Log::Create'd object.
Provides the logging interface for the KIM API.
type(kim_log_handle_type), save, public, protected kim_log_null_handle
NULL handle for use in comparisons.
recursive subroutine kim_log_get_id(log_handle, id_string)
Get the identity of the Log object.
An Extensible Enumeration for the LanguageName's supported by the KIM API.
recursive subroutine kim_log_pop_default_verbosity()
Pop a LogVerbosity from the KIM API global default verbosity stack.
recursive subroutine kim_log_pop_verbosity(log_handle)
Pop a LogVerbosity from the Log object's verbosity stack.
recursive subroutine kim_log_log_entry(log_handle, log_verbosity, message)
Write a log entry into the log file.
recursive subroutine kim_log_push_verbosity(log_handle, log_verbosity)
Push a new LogVerbosity onto the Log object's verbosity stack.
recursive subroutine kim_log_pop_default_print_function()
Pop a log PrintFunction from the KIM API global default log PrintFunction stack.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.