blob: 0f273e01cbbf9b78d068454e7263dca8b748e495 [file] [log] [blame]
% File src/library/methods/man/method.skeleton.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2016 R Core Team
% Distributed under GPL 2 or later
\name{method.skeleton}
\alias{method.skeleton}
\title{Create a Skeleton File for a New Method}
\description{
This function writes a source file containing a call to
\code{\link{setMethod}} to define a method for the generic function
and signature supplied. By default the method definition is in line
in the call, but can be made an external (previously assigned) function.
}
\usage{
method.skeleton(generic, signature, file, external = FALSE, where)
}
\arguments{
\item{generic}{the character string name of the generic function, or
the generic function itself. In the first case, the function
need not currently be a generic, as it would not for the
resulting call to \code{\link{setMethod}}.}
\item{signature}{the method signature, as it would be given to \code{\link{setMethod}}}
\item{file}{a character string name for the output file, or a
writable connection. By default the generic function name and
the classes in the signature are concatenated, with separating
underscore characters. The file name should normally end in \code{".R"}. }
To write multiple method skeletons to one file, open the file
connection first and then pass it to \code{method.skeleton()} in
multiple calls.
\item{external}{flag to control whether the function definition for
the method should be a separate external object assigned in the
source file, or included in line in the call to
\code{\link{setMethod}}.
If supplied as a character string, this will be used as the name
for the external function; by default the name concatenates the
generic and signature names, with separating underscores.}
\item{where}{The environment in which to look for the function; by default,
the top-level environment of the call to \code{method.skeleton}.}
}
\value{
The \code{file} argument, invisibly, but the function is used for its side effect.
}
\seealso{\code{\link{setMethod}}, \code{\link{package.skeleton}}
}
\examples{
\dontshow{oWD <- setwd(tempdir())}
setClass("track", slots = c(x ="numeric", y="numeric"))
method.skeleton("show", "track") ## writes show_track.R
method.skeleton("Ops", c("track", "track")) ## writes "Ops_track_track.R"
## write multiple method skeletons to one file
con <- file("./Math_track.R", "w")
method.skeleton("Math", "track", con)
method.skeleton("exp", "track", con)
method.skeleton("log", "track", con)
close(con)
\dontshow{setwd(oWD)}
}
\keyword{programming}
\keyword{methods}