\HeaderA{TraceClasses}{Classes Used Internally to Control Tracing}{TraceClasses}
\aliasA{.doTracePrint}{TraceClasses}{.doTracePrint}
\aliasA{.InitTraceFunctions}{TraceClasses}{.InitTraceFunctions}
\aliasA{.makeTracedFunction}{TraceClasses}{.makeTracedFunction}
\aliasA{.untracedFunction}{TraceClasses}{.untracedFunction}
\aliasA{functionWithTrace-class}{TraceClasses}{functionWithTrace.Rdash.class}
\aliasA{genericFunctionWithTrace-class}{TraceClasses}{genericFunctionWithTrace.Rdash.class}
\aliasA{groupGenericFunctionWithTrace-class}{TraceClasses}{groupGenericFunctionWithTrace.Rdash.class}
\aliasA{MethodDefinitionWithTrace-class}{TraceClasses}{MethodDefinitionWithTrace.Rdash.class}
\aliasA{MethodWithNextWithTrace-class}{TraceClasses}{MethodWithNextWithTrace.Rdash.class}
\aliasA{traceable-class}{TraceClasses}{traceable.Rdash.class}
\keyword{classes}{TraceClasses}
\begin{Description}\relax
The classes described  here are used by the R function
\code{\LinkA{trace}{trace}} to create versions of functions and methods
including browser calls, etc., and also to \code{\LinkA{untrace}{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{\LinkA{initialize}{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{\LinkA{trace}{trace}}
\end{SeeAlso}

