Normalize signal and slot names at compile time.
Thu Jun 4 12:58:29 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Normalize signal and slot names at compile time.
hunk ./src/signal-slot/connect.lisp 53
- :reader name)))
+ :reader name)))
hunk ./src/signal-slot/connect.lisp 69
+(define-compiler-macro get-slot (&whole form receiver name)
+ "Normalize the slot name."
+ (if (stringp name)
+ (let ((normalized-name (cxx:data (meta-object.normalized-signature name))))
+ (if (string= name normalized-name) ;; Avoid loop
+ form
+ `(get-slot ,receiver ,normalized-name)))
+ form))
+
hunk ./src/signal-slot/connect.lisp 81
- [_$_]
+
+(define-compiler-macro get-signal (&whole form sender name)
+ "Normalize the signal name."
+ (if (stringp name)
+ (let ((normalized-name (cxx:data (meta-object.normalized-signature name))))
+ (if (string= name normalized-name) ;; Avoid loop
+ form
+ `(get-signal ,sender ,normalized-name)))
+ form))
+ [_$_]
hunk ./src/signal-slot/signal.lisp 57
+ ;; For efficency assume that SLOT is normalized and fallback
+ ;; to normalzing when not. (Just like Qt does.)
hunk ./src/signal-slot/signal.lisp 60
- (cxx:data (meta-object.normalized-signature slot)))))
+ slot)))
+ (when (< id 0)
+ (setf id (cxx:index-of-slot (cxx:meta-object receiver)
+ (cxx:data (meta-object.normalized-signature slot)))))
hunk ./src/signal-slot/slot.lisp 50
+ ;; For efficency assume that SIGNAL is normalized and fallback
+ ;; to normalzing when not. (Just like Qt does.)
hunk ./src/signal-slot/slot.lisp 53
- (cxx:data (meta-object.normalized-signature signal)))))
+ signal)))
+ (when (< id 0)
+ (setf id (cxx:index-of-signal (cxx:meta-object sender)
+ (cxx:data (meta-object.normalized-signature signal)))))