% File src/library/methods/man/classRepresentation-class.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2007 R Core Team
% Distributed under GPL 2 or later

\name{classRepresentation-class}
\docType{class}
\alias{classRepresentation-class}
\title{Class Objects }
\description{  These are the objects that hold the definition of
  classes of objects.  They are constructed and stored as meta-data by
  calls to the function \code{\link{setClass}}.  Don't manipulate them
  directly, except perhaps to look at individual slots. }

\section{Slots}{
  \describe{
    \item{\code{slots}:}{A named list of the slots in this class; the
      elements of the list are the classes to which the slots must
      belong (or extend), and the names of the list gives the
      corresponding slot names.}
    \item{\code{contains}:}{A named list of the classes this class
      \sQuote{contains}; the elements of the list are objects of
      \code{\linkS4class{SClassExtension}}. The list may be only the
      direct extensions or all the currently known extensions (see the
      details).}
    \item{\code{virtual}:}{Logical flag, set to \code{TRUE} if this is
      a virtual class.}
    \item{\code{prototype}:}{The object that represents the standard
      prototype for this class; i.e., the data and slots returned by a
      call to \code{\link{new}} for this class with no special
      arguments.  Don't mess with the prototype object directly.}
    \item{\code{validity}:}{Optionally, a function to be used to test
      the validity of objects from this class.
      See \code{\link{validObject}}.}
    \item{\code{access}:}{Access control information.  Not currently used.}
    \item{\code{className}:}{The character string name of the class.}
    \item{\code{package}:}{The character string name of the package to
      which the class belongs.  Nearly always the package on which the
      metadata for the class is stored, but in operations such as
      constructing inheritance information, the internal package name
      rules.}
    \item{\code{subclasses}:}{A named list of the classes known to
      extend this class'; the elements of the list are objects of class
      \code{\linkS4class{SClassExtension}}.  The list is currently only
      filled in when completing the class definition (see the details).}
    \item{\code{versionKey}:}{Object of class \code{"externalptr"};
      eventually will perhaps hold some versioning information, but not
      currently used. }
    \item{\code{sealed}:}{Object of class \code{"logical"}; is this
      class sealed?  If so, no modifications are allowed. }
  }
}
\details{
  Class definitions are stored as metadata in various packages.
  Additional metadata supplies information on inheritance (the result of
  calls to \code{\link{setIs}}).  Inheritance information implied by the
  class definition itself (because the class contains one or more other
  classes) is also constructed automatically.

  When a class is to be used in an R session, this information is
  assembled to complete the class definition.  The completion is a
  second object of class \code{"classRepresentation"}, cached for the
  session or until something happens to change the information.  A call
  to \code{\link{getClass}} returns the completed definition of a class;
  a call to \code{\link{getClassDef}} returns the stored definition
  (uncompleted).

  In particular, completion fills in the upward- and downward-pointing
  inheritance information for the class, in slots \code{contains} and
  \code{subclasses} respectively.  It's in principle important to note
  that this information can depend on which packages are installed,
  since these may define additional subclasses or superclasses.
}
\seealso{
  See function \code{\link{setClass}} to supply the information in the
  class definition.
  See \link{Classes_Details} for a more basic discussion of class information.
}
\keyword{classes}
