X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/9ca5565a9443f9bd9f464838b7828589fe47be7f..3b1ba4821b848ca134d8ff2a97c90401d584a5ae:/glib/ffi.lisp diff --git a/glib/ffi.lisp b/glib/ffi.lisp index e7bbd95..825facb 100644 --- a/glib/ffi.lisp +++ b/glib/ffi.lisp @@ -15,7 +15,7 @@ ;; License along with this library; if not, write to the Free Software ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -;; $Id: ffi.lisp,v 1.6 2004-11-19 13:02:51 espen Exp $ +;; $Id: ffi.lisp,v 1.9 2004-12-19 15:31:26 espen Exp $ (in-package "GLIB") @@ -47,15 +47,22 @@ (defun default-alien-fname (lisp-name) - (let* ((lisp-name-string - (if (char= (char (the simple-string (string lisp-name)) 0) #\%) - (subseq (the simple-string (string lisp-name)) 1) - (string lisp-name))) - (prefix (package-prefix *package*)) - (name (substitute #\_ #\- (string-downcase lisp-name-string)))) + (let* ((name (substitute #\_ #\- (string-downcase lisp-name))) + (stripped-name + (cond + ((and + (char= (char name 0) #\%) + (string= "_p" name :start2 (- (length name) 2))) + (subseq name 1 (- (length name) 2))) + ((char= (char name 0) #\%) + (subseq name 1)) + ((string= "_p" name :start2 (- (length name) 2)) + (subseq name 0 (- (length name) 2))) + (name))) + (prefix (package-prefix *package*))) (if (or (not prefix) (string= prefix "")) - name - (format nil "~A_~A" prefix name)))) + stripped-name + (format nil "~A_~A" prefix stripped-name)))) (defun default-alien-type-name (type-name) (let ((prefix (package-prefix *package*))) @@ -299,7 +306,7 @@ (defmethod destroy-function ((type t) &rest args) (declare (ignore type args)) - #'(lambda (location offset) + #'(lambda (location &optional offset) (declare (ignore location offset)))) (defmethod copy-to-alien-form (form (type t) &rest args) @@ -452,7 +459,7 @@ (defmethod size-of ((type (eql 'double-float)) &rest args) (declare (ignore type args)) - +size-of-float+) + +size-of-double+) (defmethod writer-function ((type (eql 'double-float)) &rest args) (declare (ignore type args)) @@ -768,4 +775,12 @@ (declare (ignore type)) (copy-from-alien-function (first args))) +(defmethod reader-function ((type (eql 'copy-of)) &rest args) + (declare (ignore type)) + (reader-function (first args))) + +(defmethod writer-function ((type (eql 'copy-of)) &rest args) + (declare (ignore type)) + (writer-function (first args))) + (export 'copy-of)