Now we can report on kinds of methods.
simple-method-body generic
sod-message-argument-tail generic
sod-message-effective-method-class generic
simple-method-body generic
sod-message-argument-tail generic
sod-message-effective-method-class generic
+ sod-method-description generic
sod-method-function-name generic
sod-method-function-type generic
sod-method-next-method-type generic
sod-method-function-name generic
sod-method-function-type generic
sod-method-next-method-type generic
sod-method
sod-method-class
sod-method
sod-method
sod-method-class
sod-method
+sod-method-description
+ basic-direct-method
sod-method-function-name
basic-direct-method
sod-method-function-type
sod-method-function-name
basic-direct-method
sod-method-function-type
\begin{describe}{gf}{sod-method-next-method-type @<method> @> @<c-type>}
\end{describe}
\begin{describe}{gf}{sod-method-next-method-type @<method> @> @<c-type>}
\end{describe}
+\begin{describe}{gf}{sod-method-description @<method> @> @<string>}
+\end{describe}
+
\begin{describe}{gf}{sod-method-function-name @<method> @> @<string>}
\end{describe}
\begin{describe}{gf}{sod-method-function-name @<method> @> @<string>}
\end{describe}
("me" (* (class (sod-method-class method))))
. method-args))))
("me" (* (class (sod-method-class method))))
. method-args))))
+(defmethod sod-method-description ((method basic-direct-method))
+ (with-slots (role) method
+ (if role (string-downcase role)
+ "primary")))
+
(defmethod sod-method-function-name ((method basic-direct-method))
(with-slots ((class %class) role message) method
(format nil "~A__~@[~(~A~)_~]method_~A__~A" class role
(defmethod sod-method-function-name ((method basic-direct-method))
(with-slots ((class %class) role message) method
(format nil "~A__~@[~(~A~)_~]method_~A__~A" class role
No `me' argument is prepended; any `:ellipsis' is left as it is."))
No `me' argument is prepended; any `:ellipsis' is left as it is."))
+(export 'sod-method-description)
+(defgeneric sod-method-description (method)
+ (:documentation
+ "Return an adjectival phrase describing METHOD.
+
+ The result will be placed into an error message reading something like
+ ``Conflicting definition of DESCRIPTION direct method `bogus'''. Two
+ direct methods which can coexist in the same class, defined on the same
+ message, should have differing descriptions."))
+
(export 'sod-method-function-type)
(defgeneric sod-method-function-type (method)
(:documentation
(export 'sod-method-function-type)
(defgeneric sod-method-function-type (method)
(:documentation