Support ownership transfer to non smoke wrapped QObjects & cleanup C++ to Lisp translation.
src/qstring.lisp
Sun Aug 2 13:15:21 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Support ownership transfer to non smoke wrapped QObjects & cleanup C++ to Lisp translation.
--- old-qt.gui/src/qstring.lisp 2014-10-30 07:44:42.000000000 +0100
+++ new-qt.gui/src/qstring.lisp 2014-10-30 07:44:42.000000000 +0100
@@ -10,17 +10,6 @@
(defcfun qt-smoke-qstring-to-byte-array :pointer
(qstring :pointer))
-(define-foreign-type qstring ()
- ()
- (:actual-type :pointer))
-
-(defun setup-type-map ()
- (smoke::add-type "QString" 'qstring)
- (smoke::add-type "const QString&" 'qstring))
-
-(eval-when (:load-toplevel :execute)
- (setup-type-map))
-
;;; make sure, that you have configured slime correctly.
;;; e.g.:
;;; (string #\U9999) crashed slime for me. Adding
@@ -34,33 +23,27 @@
(qt:text-codec.set-codec-for-locale
(qt:text-codec.codec-for-name (string *default-foreign-encoding*))))
-(define-parse-method qstring ()
- (make-instance 'qstring))
-
(smoke:eval-startup (:compile-toplevel :execute)
- (let ((method (smoke::make-smoke-method-from-name (find-class 'qt:byte-array)
- "data")))
- (defmethod cxx:data ((array qt:byte-array))
- (values ;; Discharge second return value (length of string)
- (foreign-string-to-lisp (smoke::pointer-call method
- (smoke::pointer array))
- :count (cxx:size array))))))
+ (let ((method (smoke::make-smoke-method-from-name (find-class 'qt:byte-array)
+ "data")))
+ (defmethod cxx:data ((array qt:byte-array))
+ (values ;; Discharge second return value (length of string)
+ (foreign-string-to-lisp (smoke::pointer-call method
+ (smoke::pointer array))
+ :count (cxx:size array))))))
-(defmethod translate-from-foreign (string (type qstring))
+(defun from-qstring (qstring)
(cxx:data (make-instance 'qt:byte-array
- :pointer (qt-smoke-qstring-to-byte-array string))))
+ :pointer (qt-smoke-qstring-to-byte-array qstring))))
-(defmethod free-translated-object (pointer (type qstring) param)
- (declare (ignore param))
- (qt-smoke-free-qstring pointer))
+(define-to-lisp-translation ("QString" "const QString&")
+ from-qstring qt-smoke-free-qstring)
(defun coerce-qstring (string)
(make-cleanup-pointer
(with-foreign-string ((data length) string :null-terminated-p nil)
(qt-smoke-string-to-qstring data length))
- #'(lambda (pointer)
- (free-translated-object pointer (make-instance 'qstring)
- nil))))
+ #'qt-smoke-free-qstring))
(define-from-lisp-translation ("const QString&" "QString") string
coerce-qstring)