[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How to add slots to method objects
- To: CommonLoops.PA@Xerox.COM
- Subject: How to add slots to method objects
- From: Martin Boyer <gamin@Moe.McRCIM.McGill.EDU>
- Date: Mon, 19 Jun 89 10:15:36 EDT
- Redistributed: CommonLoops.PA
I am trying to add slots to method objects and to generic-function objects
using Victoria Day PCL on Lucid 3.0.2.
If I understand the 88-00R document correctly (in particular, the
DEFGENERIC description and its :method-class option), this could be done
by:
1. creating a new class of methods:
(defclass action-method
(standard-method)
( (type :reader action-type ) )
)
2. telling PCL that certain methods are instances of action-method:
(defgeneric move (object position)
(:method-class 'action-method)
)
3. And I could retrieve the slot values using:
(defun find-action-type (action qualifiers &rest object-types)
(let ((method-used (find-method action qualifiers object-types)))
(action-type method-used)
)
)
The first one was easy. Unfortunately, DEFGENERIC doesn't yet accept
options and FIND-METHOD is not implemented yet.
I tried ENSURE-GENERIC-FUNCTION, but it ignores the relevant options. I
tried CHANGE-CLASS on a method, but there is no method defined for
CHANGE-CLASS on action-method classes. I also looked in the section on
Meta-Objects (p. 1-33, 1-34), but chapter 3 is not available yet for
non-initiated.
It there a solution to this? I am considering modifications to the PCL
source to add those slots as part of the STANDARD-METHOD definition but
that is an ugly hack.
Thanks,
Martin
--
Martin Boyer
McGill Research Centre for Intelligent Machines
McGill University, Montreal, QC
gamin@larry.mcrcim.mcgill.edu
gamin@mcgill-vision.uucp