\Header{TraceClasses}{Classes Used Internally to Control Tracing}
\alias{.doTracePrint}{TraceClasses}
\alias{.InitTraceFunctions}{TraceClasses}
\alias{.makeTracedFunction}{TraceClasses}
\alias{.untracedFunction}{TraceClasses}
\alias{functionWithTrace-class}{TraceClasses}
\alias{genericFunctionWithTrace-class}{TraceClasses}
\alias{groupGenericFunctionWithTrace-class}{TraceClasses}
\alias{MethodDefinitionWithTrace-class}{TraceClasses}
\alias{MethodWithNextWithTrace-class}{TraceClasses}
\alias{traceable-class}{TraceClasses}
\keyword{classes}{TraceClasses}
\begin{Description}\relax
The classes described  here are used by the R function
\code{\Link{trace}} to create versions of functions and methods
including browser calls, etc., and also to \code{\Link{untrace}} the
same objects.
\end{Description}
\begin{Usage}
\begin{verbatim}
### Objects from the following classes are generated
### by calling trace() on an object from the corresponding
### class without the "WithTrace" in the name.

"functionWithTrace"
"MethodDefinitionWithTrace"
"MethodWithNextWithTrace"
"genericFunctionWithTrace"
"groupGenericFunctionWithTrace"

### the following is a virtual class extended by each of the
### classes above

"traceable"
\end{verbatim}
\end{Usage}
\begin{Section}{Objects from the Class}
Objects will be created from these classes by calls to \code{trace}.
(There is an \code{\Link{initialize}} method for class
\code{"traceable"}, but you are unlikely to need it directly.)
\end{Section}
\begin{Section}{Slots}
\describe{
\item[\code{.Data}:] The data part, which will be \code{"function"}
for class \code{"functionWithTrace"}, and similarly for the other
classes.
\item[\code{original}:] Object of the original class; e.g.,
\code{"function"} for class \code{"functionWithTrace"}. 
}
\end{Section}
\begin{Section}{Extends}
Each of the classes extends the corresponding untraced class, from the
data part; e.g., \code{"functionWithTrace"} extends \code{"function"}.
Each of the specific classes extends \code{"traceable"}, directly,
and class \code{"VIRTUAL"}, by class \code{"traceable"}.
\end{Section}
\begin{Section}{Methods}
The point of the specific classes is that objects generated from them,
by function \code{trace()}, remain callable or dispatchable, in
addition to their new trace information.
\end{Section}
\begin{SeeAlso}\relax
function \code{\Link{trace}}
\end{SeeAlso}

