2664 |
with the default metaclass @code{<class>}, has the following internal |
with the default metaclass @code{<class>}, has the following internal |
2665 |
protocol. |
protocol. |
2666 |
|
|
|
[ *fixme* I'm not sure that I understand this sufficiently to explain |
|
|
it. Also, the internals of the default class redefinition method are |
|
|
extremely implementation-specific, and I'm not sure that there is that |
|
|
much point trying to describe the internal protocol such that it could |
|
|
be customized without going to look at the source code. ] |
|
|
|
|
2667 |
@code{class-redefinition @var{(old <class>)} @var{(new <class>)}} |
@code{class-redefinition @var{(old <class>)} @var{(new <class>)}} |
2668 |
(method) |
(method) |
2669 |
|
|
2679 |
@end itemize |
@end itemize |
2680 |
|
|
2681 |
The default @code{update-direct-subclass!} method invokes |
The default @code{update-direct-subclass!} method invokes |
2682 |
@code{class-redefinition} recursively to handle the redefinition of the |
@code{class-redefinition} recursively to handle the redefinition of |
2683 |
subclass. |
subclasses. |
2684 |
|
|
2685 |
When a class is redefined, any existing instance of the redefined class |
When a class is redefined, any existing instance of the redefined class |
2686 |
will be modified for the new class definition before the next time that |
will be modified for the new class definition before the next time that |
2687 |
any of the instance's slot is referenced or set. GOOPS modifies each |
any of the instance's slot is referenced or set. GOOPS modifies each |
2688 |
instance by calling the generic function @code{change-class}. [ *fixme* |
instance by calling the generic function @code{change-class}. |
|
Actually it sometimes calls @code{change-class} and sometimes |
|
|
@code{change-object-class}, and I don't understand why. ] |
|
2689 |
|
|
2690 |
The default @code{change-class} method copies slot values from the old |
The default @code{change-class} method copies slot values from the old |
2691 |
to the modified instance, and initializes new slots, as described in |
to the modified instance, and initializes new slots, as described in |