-(defun debugf (&rest args)
- (when *gobject-debug*
- (apply 'format t args)))
\ No newline at end of file
+(defvar *debug-gc* nil)
+(defvar *debug-subclass* nil)
+
+(defvar *debug-stream* t)
+
+(defmacro log-for (categories control-string &rest args)
+ (let ((vars (iter (for sym in (if (listp categories) categories (list categories)))
+ (collect (intern (format nil "*DEBUG-~A*" (symbol-name sym)) (find-package :gobject))))))
+ `(progn
+ (when (or ,@vars)
+ (format *debug-stream* ,control-string ,@args))
+ nil)))