From 476a51eb3893d780a1935c0754c9e7854dda8d5a Mon Sep 17 00:00:00 2001 From: Neil Jerram Date: Thu, 17 Feb 2011 22:09:13 +0000 Subject: [PATCH] Summarize class definition protocol * doc/ref/goops.texi (Class Definition Protocol): Add tree summary diagram. --- doc/ref/goops.texi | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/doc/ref/goops.texi b/doc/ref/goops.texi index 76b7dbf26..a5020d167 100644 --- a/doc/ref/goops.texi +++ b/doc/ref/goops.texi @@ -2029,6 +2029,88 @@ what the caller expects to get as the applied method's return value. @node Class Definition Protocol @subsection Class Definition Protocol +Here is a summary diagram of the syntax, procedures and generic +functions that may be involved in class definition. + +@noindent +@code{define-class} (syntax) + +@itemize @bullet +@item +@code{class} (syntax) + +@itemize @bullet +@item +@code{make-class} (procedure) + +@itemize @bullet +@item +@code{ensure-metaclass} (procedure) + +@itemize @bullet +@item +@code{ensure-metaclass-with-supers} (procedure) +@end itemize + +@item +@code{make @var{metaclass} @dots{}} (generic) + +@itemize @bullet +@item +@code{allocate-instance} (generic) + +@item +@code{initialize} (generic) + +@itemize @bullet +@item +@code{compute-cpl} (generic) + +@itemize @bullet +@item +@code{compute-std-cpl} (procedure) +@end itemize + +@item +@code{compute-slots} (generic) + +@item +@code{compute-get-n-set} (generic) + +@item +@code{compute-getter-method} (generic) + +@item +@code{compute-setter-method} (generic) +@end itemize +@end itemize +@end itemize +@end itemize + +@item +@code{class-redefinition} (generic) + +@itemize @bullet +@item +@code{remove-class-accessors} (generic) + +@item +@code{update-direct-method!} (generic) + +@item +@code{update-direct-subclass!} (generic) +@end itemize +@end itemize + +Wherever a step above is marked as ``generic'', it can be customized, +and the detail shown below it is only ``correct'' insofar as it +describes what the default method of that generic function does. For +example, if you write an @code{initialize} method, for some metaclass, +that does not call @code{next-method} and does not call +@code{compute-cpl}, then @code{compute-cpl} will not be called when a +class is defined with that metaclass. + + @code{define-class} (syntax) @itemize @bullet