% -*- Mode: TeX -*-
% Meta-Objects



The implementation of the \OS\ manipulates \term{classes}, \term{methods},
and \term{generic functions}.  The \OS\ contains a set of 
\term{generic functions} defined by \term{methods} on \term{classes}; 
the behavior of those \term{generic functions} defines the behavior of
the \OS.  The \term{instances} of the \term{classes} on which those
\term{methods} are defined are called meta-objects.  
%Programming
%at the meta-object protocol level involves defining new classes of
%meta-objects along with methods specialized on these classes.


\beginsubsection{Standard Meta-objects}

The \OS\ supplies a set of meta-objects, called standard meta-objects.
These include \theclass{standard-object} and
\term{instances} of the classes \typeref{standard-method}, 
\typeref{standard-generic-function}, and \typeref{method-combination}.

\beginlist

\editornote{KMP: This is said redundantly in the definition of STANDARD-METHOD.}%!!!
\itemitem{\bull} 
\Theclass{standard-method} is the default \term{class} of 
\term{methods} defined by the 
 \macref{defmethod} and
 \macref{defgeneric} \term{forms}.
\issue{GENERIC-FLET-POORLY-DESIGNED:DELETE}
% \macref{generic-function},
\endissue{GENERIC-FLET-POORLY-DESIGNED:DELETE}
\issue{WITH-ADDED-METHODS:DELETE}
%\specref{with-added-methods},
\endissue{WITH-ADDED-METHODS:DELETE}%
\issue{GENERIC-FLET-POORLY-DESIGNED:DELETE}
%  \specref{generic-flet}, 
% and
%  \specref{generic-labels}.
\endissue{GENERIC-FLET-POORLY-DESIGNED:DELETE}

\itemitem{\bull}
\Theclass{standard-generic-function} is the default \term{class} of 
\term{generic functions} defined by the forms
  \macref{defmethod},
  \macref{defgeneric},
\issue{GENERIC-FLET-POORLY-DESIGNED:DELETE}
% \macref{generic-function},
% \specref{generic-flet},
% \specref{generic-labels},
\endissue{GENERIC-FLET-POORLY-DESIGNED:DELETE}
\issue{WITH-ADDED-METHODS:DELETE}
% \specref{with-added-methods},
\endissue{WITH-ADDED-METHODS:DELETE}%
 and
  \macref{defclass}.

\itemitem{\bull} The \term{class} named \typeref{standard-object} 
is an \term{instance} of \theclass{standard-class} 
and is a \term{superclass} of every \term{class} that is an
\term{instance} of \typeref{standard-class} except itself and 
\typeref{structure-class}.

\itemitem{\bull} Every \term{method} combination object is 
an \term{instance} of a \subclassof{method-combination}.

\endlist

\endsubsection%{Standard Meta-objects} 

