(in-package :cl-smoke.qt.core) ;; FIXME Determine the actual size of the QtMsgType enum. (cffi:defctype qt-msg-type :int) ;; QtMsgHandler is a typedef for a pointer. (define-pointer-typedef "QtMsgHandler" foreign-pointer) (define-pointer-typedef "void(*)(QtMsgType,const char*)" foreign-pointer) (define-pointer-typedef "unsigned char*" foreign-pointer) (defcallback qt-msg-handler :void ((type qt-msg-type) (message :string)) (ecase type (#.(value qt:+qt-debug-msg+) (write-string "qDebug: " *debug-io*) (write-line message *debug-io*)) (#.(value qt:+qt-warning-msg+) (warn message)) (#.(value qt:+qt-critical-msg+) (cerror "Ignore" "~A" message)) (#.(value qt:+qt-fatal-msg+) (error message)))) (eval-startup (:load-toplevel) (qt:q-install-msg-handler (callback qt-msg-handler)))