\Header{BasicClasses}{Classes Corresponding to Basic Data Types}
\alias{ANY-class}{BasicClasses}
\alias{character-class}{BasicClasses}
\alias{complex-class}{BasicClasses}
\alias{double-class}{BasicClasses}
\alias{expression-class}{BasicClasses}
\alias{externalptr-class}{BasicClasses}
\alias{function-class}{BasicClasses}
\alias{integer-class}{BasicClasses}
\alias{list-class}{BasicClasses}
\alias{logical-class}{BasicClasses}
\alias{missing-class}{BasicClasses}
\alias{NULL-class}{BasicClasses}
\alias{numeric-class}{BasicClasses}
\alias{single-class}{BasicClasses}
\alias{vector-class}{BasicClasses}
\alias{VIRTUAL-class}{BasicClasses}
\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"

### 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}

