\HeaderA{BasicClasses}{Classes Corresponding to Basic Data Types}{BasicClasses}
\aliasA{ANY-class}{BasicClasses}{ANY.Rdash.class}
\aliasA{character-class}{BasicClasses}{character.Rdash.class}
\aliasA{complex-class}{BasicClasses}{complex.Rdash.class}
\aliasA{double-class}{BasicClasses}{double.Rdash.class}
\aliasA{expression-class}{BasicClasses}{expression.Rdash.class}
\aliasA{externalptr-class}{BasicClasses}{externalptr.Rdash.class}
\aliasA{function-class}{BasicClasses}{function.Rdash.class}
\aliasA{integer-class}{BasicClasses}{integer.Rdash.class}
\aliasA{list-class}{BasicClasses}{list.Rdash.class}
\aliasA{logical-class}{BasicClasses}{logical.Rdash.class}
\aliasA{missing-class}{BasicClasses}{missing.Rdash.class}
\aliasA{NULL-class}{BasicClasses}{NULL.Rdash.class}
\aliasA{numeric-class}{BasicClasses}{numeric.Rdash.class}
\aliasA{raw-class}{BasicClasses}{raw.Rdash.class}
\aliasA{single-class}{BasicClasses}{single.Rdash.class}
\aliasA{vector-class}{BasicClasses}{vector.Rdash.class}
\aliasA{VIRTUAL-class}{BasicClasses}{VIRTUAL.Rdash.class}
\keyword{classes}{BasicClasses}
\begin{Description}\relax
Formal classes exist corresponding to the basic R data types, allowing
these types to be used in method signatures, as slots in class
definitions, and to be extended by new classes.
\end{Description}
\begin{Usage}
\begin{verbatim}
### The following are all basic vector classes.
### They can appear as class names in method signatures,
### in calls to as(), is(), and new().
"character"
"complex"
"double"
"expression"
"integer"
"list"
"logical"
"numeric"
"single"
"raw"

### the class
"vector"
### is a virtual class, extended by all the above

### The following are additional basic classes
"NULL"     #  NULL objects
"function" #  function objects, including primitives
"externalptr" # raw external pointers for use in C code

"ANY"  # virtual classes used by the methods package itself
"VIRTUAL"
"missing"
\end{verbatim}
\end{Usage}
\begin{Section}{Objects from the Classes}
Objects can be created by calls of the form \code{new(Class, ...)},
where \code{Class} is the quoted class name, and the remaining
arguments if any are objects to be interpreted as vectors of this
class.  Multiple arguments will be concatenated.

The class \code{"expression"} is slightly odd, in that the \dots
arguments will \emph{not} be evaluated; therefore, don't enclose them
in a call to \code{quote()}.
\end{Section}
\begin{Section}{Extends}
Class \code{"vector"}, directly.
\end{Section}
\begin{Section}{Methods}
\describe{
\item[coerce] Methods are defined to coerce arbitrary objects to
these classes, by calling the corresponding basic function, for
example, \code{as(x, "numeric")} calls \code{as.numeric(x)}. 
}
\end{Section}

