X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/4c795125e98b08d93a06cecafd1ee4ca2d5ca73c..fe67c0ec67bbea43585bcc9acecfa98d6775d9af:/glib/ffi.lisp diff --git a/glib/ffi.lisp b/glib/ffi.lisp index 95f2155..ee87fba 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.7 2004/12/04 00:28:47 espen Exp $ +;; $Id: ffi.lisp,v 1.9 2004/12/19 15:31:26 espen Exp $ (in-package "GLIB") @@ -47,15 +47,22 @@ (defmacro use-prefix (prefix &optional (package *package*)) (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*))) @@ -452,7 +459,7 @@ (defmethod alien-type ((type (eql 'double-float)) &rest args) (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))