:qt and :qt-impl packages to prevent collision with :cl symbols and fix object with non smoke parent.
Annotate for file src/string-list.lisp
2009-06-11 tobias 1 (in-package :cl-smoke.qt-impl)
2010-01-10 tobias 2
08:52:49 ' 3 (defcfun qt-smoke-string-list-size :int
' 4 (string-list :pointer))
' 5
' 6 (defcfun qt-smoke-string-list-at :pointer
' 7 (string-list :pointer)
' 8 (index :int))
' 9
' 10 (defcfun qt-smoke-free-string-list :void
' 11 (string-list :pointer))
' 12
' 13 (defcfun qt-smoke-make-string-list :pointer)
' 14
' 15 (defcfun qt-smoke-string-list-append :void
' 16 (string-list :pointer)
' 17 (string :pointer)
' 18 (length :int))
' 19
2009-08-02 tobias 20 (define-foreign-type string-list ()
11:15:21 ' 21 ()
' 22 (:actual-type :pointer))
' 23
' 24 (eval-when (:load-toplevel)
' 25 (smoke::add-type "QStringList" 'string-list)
' 26 (smoke::add-type "const QStringList&" 'string-list))
' 27
' 28
' 29 (define-parse-method string-list ()
' 30 (make-instance 'string-list))
' 31
' 32 (defmethod translate-to-foreign (sequence (type string-list))
' 33 (let ((string-list (qt-smoke-make-string-list)))
' 34 (map nil #'(lambda (string)
' 35 (with-foreign-string ((data length) string :null-terminated-p nil)
' 36 (qt-smoke-string-list-append string-list data length)))
' 37 sequence)
' 38 string-list))
' 39
' 40
' 41 (defmethod translate-from-foreign (string-list (type string-list))
' 42 (let ((vector (make-array (qt-smoke-string-list-size string-list))))
2010-01-10 tobias 43 (dotimes (index (length vector) vector)
08:52:49 ' 44 (setf (aref vector index)
' 45 (cxx:data (make-instance 'qt:byte-array
' 46 :pointer (qt-smoke-string-list-at
' 47 string-list index)))))))
' 48
2009-08-02 tobias 49 (defmethod free-translated-object (string-list (type string-list) param)
11:15:21 ' 50 (declare (ignore param))
' 51 (qt-smoke-free-string-list string-list))
' 52
' 53 (defun coerce-string-list (list)
' 54 (make-cleanup-pointer
2009-06-11 tobias 55 (translate-to-foreign list (make-instance 'string-list))
2009-08-02 tobias 56 #'(lambda (pointer)
2009-06-11 tobias 57 (free-translated-object pointer (make-instance 'string-list)
2009-08-02 tobias 58 nil))))
2010-01-10 tobias 59
08:52:49 ' 60 (define-from-lisp-translation "const QStringList&"
2009-09-02 tobias 61 (vector string) coerce-string-list)
2009-05-11 tobias 62