initial import
src/string-list.lisp
Sun Apr 5 19:56:16 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* initial import
--- old-qt.core/src/string-list.lisp 1970-01-01 01:00:00.000000000 +0100
+++ new-qt.core/src/string-list.lisp 2014-11-11 13:38:11.000000000 +0100
@@ -0,0 +1,51 @@
+(in-package :qt)
+
+(defcfun qt-smoke-string-list-size :int
+ (string-list :pointer))
+
+(defcfun qt-smoke-string-list-at :pointer
+ (string-list :pointer)
+ (index :int))
+
+(defcfun qt-smoke-free-string-list :void
+ (string-list :pointer))
+
+(defcfun qt-smoke-make-string-list :pointer)
+
+(defcfun qt-smoke-string-list-append :void
+ (string-list :pointer)
+ (string :pointer)
+ (length :int))
+
+(define-foreign-type string-list ()
+ ()
+ (:actual-type :pointer))
+
+(eval-when (:load-toplevel)
+ (smoke::add-type "QStringList" 'string-list)
+ (smoke::add-type "const QStringList&" 'string-list))
+
+
+(define-parse-method string-list ()
+ (make-instance 'string-list))
+
+(defmethod translate-to-foreign (sequence (type string-list))
+ (let ((string-list (qt-smoke-make-string-list)))
+ (map nil #'(lambda (string)
+ (with-foreign-string ((data length) string :null-terminated-p nil)
+ (qt-smoke-string-list-append string-list data length)))
+ sequence)
+ string-list))
+
+
+(defmethod translate-from-foreign (string-list (type string-list))
+ (let ((vector (make-array (qt-smoke-string-list-size string-list))))
+ (dotimes (index (length vector) vector)
+ (setf (aref vector index)
+ (cxx:data (make-instance 'qt:byte-array
+ :pointer (qt-smoke-string-list-at
+ string-list index)))))))
+
+(defmethod free-translated-object (string-list (type string-list) param)
+ (declare (ignore param))
+ (qt-smoke-free-string-list string-list))