[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Alternative Proposal for class updating
- To: Common-Lisp-Object-System@SAIL.STANFORD.EDU
- Subject: Alternative Proposal for class updating
- From: Patrick H Dussud <DUSSUD@jenner.csc.ti.com>
- Date: Mon, 25 Jan 88 10:37:30 CST
- In-reply-to: Msg of 15 Jan 88 14:17 PST from Bobrow.pa@xerox.com
The generic functions used are:
Reintialization:
reinitialize-instance (object &rest reinit-args)
This generic function is intended to initialize again the object. The default
method augments the given reinit-args using default-initargs, checks the
arguments, and calls initialize-instance. It then updates any dependents
I like the concept. I would like it to be more parallel to make-instance
though. reinitialize-instance could accept allocate-instance keywords as
well. We can imagine cases where we would want to reallocate the
instance, i.e update the instance allocation characteristics without
affecting the slots. We could re-use the MAKE-INSTANCE model:
(defmethod reinitialize-instance ((object standard-object) &rest reinitargs)
(setq reinitargs (default-initargs (class-of object) reinitargs))
(check-initargs (class-of object) reinitargs)
(apply #'reallocate-instance (class-of object ) reinitargs)
(apply #'intialize-instance object reinitargs))
We also have to tell what happens if a slot is unbound. Do we
reinitialize it to its initform when there is no reinitargs to
reinitialize it?
method-keyword-arguments (generic-function list-of-arguments)
This generic function provides an facility to help users to write code for
checking legality of keyword arguments.
Maybe this facility is not necessary for reinitialize-instance?
Recording dependencies.
add-dependent(object dependent &key)
remove-dependent(object dependent &key)
all-dependents(object)
These three generic functions allow the recording of dependencies. Nothing is
specified about what the dependencies are.
The real work is done here:
update-dependent(object dependent &key)
Here again, I like the concept. What bothers me is that update-dependent
is not called by make-instance but is called by reinitialize-instance. I
wonder if update-dependent shouldn't be called outside of
reinitialize-instance.
Patrick.