[mcclim-devel] McCLIM and SCL: Some problems and patches...
Rainer Joswig
joswig at lisp.de
Sun Oct 26 14:37:16 UTC 2008
Hi,
I have been compiling McCLIM with Scieneer Common Lisp. Worked well -
a few problems:
********************************************
Flexichain needs SCL support for weak pointers. That's easy:
File utilities.lisp
(defun make-weak-pointer (object)
"Creates a new weak pointer which points to OBJECT. For
portability reasons, OBJECT most not be NIL."
(assert (not (null object)))
#+:sbcl (sb-ext:make-weak-pointer object)
#+:cmu (ext:make-weak-pointer object)
#+:scl (ext:make-weak-pointer object)
#+:clisp (ext:make-weak-pointer object)
#+:allegro
(let ((wv (excl:weak-vector 1)))
(setf (svref wv 0) object)
wv)
#+:openmcl
(let ((wp (%make-weak-pointer)))
(setf (gethash wp *weak-pointers*) object)
wp)
#+:corman (ccl:make-weak-pointer object)
#+:lispworks
(let ((array (make-array 1)))
(hcl:set-array-weak array t)
(setf (svref array 0) object)
array)
#-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl)
object)
(defun weak-pointer-value (weak-pointer)
"If WEAK-POINTER is valid, returns its value. Otherwise, returns
NIL."
#+:sbcl (prog1 (sb-ext:weak-pointer-value weak-pointer))
#+:cmu (prog1 (ext:weak-pointer-value weak-pointer))
#+:scl (prog1 (ext:weak-pointer-value weak-pointer))
#+:clisp (prog1 (ext:weak-pointer-value weak-pointer))
#+:allegro (svref weak-pointer 0)
#+:openmcl (prog1 (gethash weak-pointer *weak-pointers*))
#+:corman (ccl:weak-pointer-obj weak-pointer)
#+:lispworks (svref weak-pointer 0)
#-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl)
weak-pointer)
#-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl)
(eval-when (:compile-toplevel :load-toplevel :execute)
(warn "No support for weak pointers in this implementation. ~
Things may get big and slow."))
********************************************
File mcclim/designs.lisp
this files uses WITH-MEDIUM-OPTIONS, a macro that is later defined in
some other file.
The definition that uses WITH-MEDIUM-OPTIONS can be removed, since it
is also defined later.
********************************************
File mcclim/presentation-defs.lisp
(define-presentation-generic-function %accept accept
(type-key parameters options type stream view &key))
Above definition needs to be something like this:
(define-presentation-generic-function %accept accept
(type-key parameters options type stream view &key &allow-other-
keys))
Since there are uses of ACCEPT with :DEFAULT and :DEFAULT-TYPE .
********************************************
File: mcclim/Drei/Persistent/persistent-undo.lisp
In: DEFMETHOD FLIP-UNDO-RECORD
(FLEXICHAIN::WEAK-POINTER-VALUE C BUFFER)
WEAK-POINTER-VALUE takes only one argument, not two.
********************************************
After fixing above problems, McCLIM compiled fine with Scieneer Common
Lisp.
The Listener example was running fine...
Regards,
Rainer Joswig
Rainer Joswig, Hamburg, Germany
http://lispm.dyndns.org/
mailto:joswig at lisp.de
More information about the mcclim-devel
mailing list