[cffi-devel] Uninterned callback name in CCL

Liam Healy lnp at healy.washington.dc.us
Sat Jan 24 21:29:46 UTC 2009


CFFI will not permit uninterned symbols as callback names for CCL, due
to this definition in cffi-openmcl.lisp:

(defun intern-callback (name)
  (intern (format nil "~A::~A" (package-name (symbol-package name))
                  (symbol-name name))
          '#:cffi-callbacks))

where (package-name NIL) signals an error, but CCL doesn't have this
restriction.
The CCL manual http://ccl.clozure.com/ccl-documentation.html#m_defcallback
says merely
"name---A symbol which can be made into a special variable"
and I have experimentally confirmed that an uninterned symbol is acceptable to
CCL:

(let ((foo (make-symbol "FOO")) (arg (make-symbol "ARG")))
  `(PROGN (CCL:DEFCALLBACK ,foo
	      (:DOUBLE-FLOAT ,arg :ADDRESS PARAMS :DOUBLE-FLOAT)
	      (LET ((,arg ,arg) (PARAMS PARAMS))
		(DECLARE (IGNORE PARAMS))
		(BLOCK FOO (ONE-SINE ,arg))))
	  (SETF (GETHASH 'FOO CFFI-SYS::*CALLBACKS*) (SYMBOL-VALUE ',foo))))

Can this be changed so that uninterned symbols are acceptable, as they
are for SBCL?

Thanks,
Liam




More information about the cffi-devel mailing list