Rev 54810 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/srcfile.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2011 R Core Development Team% Distributed under GPL 2 or later\name{srcfile}\alias{srcfile}\alias{srcfilecopy}\alias{getSrcLines}\alias{srcref}\alias{srcfile-class}\alias{srcfilecopy-class}\alias{srcref-class}\alias{print.srcfile}\alias{summary.srcfile}\alias{open.srcfile}\alias{open.srcfilecopy}\alias{close.srcfile}\alias{print.srcref}\alias{summary.srcref}\alias{as.character.srcref}\alias{.isOpen}\title{References to source files}\description{These functions are for working with source files.}\usage{srcfile(filename, encoding = getOption("encoding"), Enc = "unknown")srcfilecopy(filename, lines)getSrcLines(srcfile, first, last)srcref(srcfile, lloc)\method{print}{srcfile}(x, \dots)\method{summary}{srcfile}(object, \dots)\method{open}{srcfile}(con, line, \dots)\method{close}{srcfile}(con, \dots)\method{print}{srcref}(x, useSource = TRUE, \dots)\method{summary}{srcref}(object, useSource = FALSE, \dots)\method{as.character}{srcref}(x, useSource = TRUE, \dots).isOpen(srcfile)}\arguments{\item{filename}{ The name of a file }\item{encoding}{ The character encoding to assume for the file }\item{Enc}{ The encoding with which to make strings: see the\code{encoding} argument of \code{\link{parse}}.}\item{lines}{ A character vector of source lines. Other \R objectswill be coerced to character. }\item{srcfile}{ A \code{srcfile} object. }\item{first, last, line}{ Line numbers. }\item{lloc}{ A vector of four, six or eight values giving a source location; see\sQuote{Details}.}\item{x, object, con}{ An object of the appropriate class. }\item{useSource}{ Whether to read the \code{srcfile} to obtain thetext of a \code{srcref}. }\item{\dots}{ Additional arguments to the methods; these will be ignored. }}\details{These functions and classes handle source code references.The \code{srcfile} function produces an object of class\code{srcfile}, which contains the name and directory of a source codefile, along with its timestamp, for use in source level debugging (notyet implemented) and source echoing. The encoding of the file issaved; see \code{\link{file}} for a discussion of encodings, and\code{\link{iconvlist}} for a list of allowable encodings on your platform.The \code{srcfilecopy} function produces an object of the descendantclass \code{srcfilecopy}, which saves the source lines in a charactervector.The \code{getSrcLines} function reads the specified lines from\code{srcfile}.The \code{srcref} function produces an object of class\code{srcref}, which describes a range of characters in a \code{srcfile}. The \code{lloc} value gives the following values: \code{c(first_line, first_byte, last_line, last_byte, first_column,last_column, first_parsed, last_parsed)}. Bytes (elements 2, 4) andcolumns (elements 5, 6) may be different due to multibytecharacters. If only four values are given, the columns and bytesare assumed to match. Lines (elements 1, 3) and parsed lines (elements 7, 8) may differ if a \code{#line} directive is used incode: the former will respect the directive, the latter will justcount lines. If only 4 or 6 elements are given, the parsed lineswill be assumed to match the lines.Methods are defined for \code{print}, \code{summary}, \code{open},and \code{close} for classes \code{srcfile} and \code{srcfilecopy}.The \code{open} method opens its internal \code{\link{file}} connection ata particular line; if it was already open, it will be repositionedto that line.Methods are defined for \code{print}, \code{summary} and\code{as.character} for class \code{srcref}. The \code{as.character}method will read the associated source file to obtain the textcorresponding to the reference. The exact behaviour depends on theclass of the source file. If the source file inherits fromclass \code{"srcfilecopy"}, the lines are taken from the saved copyusing the "parsed" line counts. If not, an attemptis made to read the file, and the original line numbers of the\code{srcref} record (i.e. elements 1 and 3) are used. If an erroroccurs (e.g. the file no longer exists), text like\code{<srcref: "file" chars 1:1 to 2:10>} will be returned instead,indicating the \code{line:column} ranges of the first and lastcharacter. The \code{summary} method defaults to this type ofdisplay.Lists of \code{srcref} objects may be attached to expressions as the\code{"srcref"} attribute. (The list of \code{srcref} objects should be the samelength as the expression.) By default, expressions are printed by\code{\link{print.default}} using the associated \code{srcref}. Tosee deparsed code instead, call \code{\link{print}} with argument\code{useSource = FALSE}. If a \code{srcref} objectis printed with \code{useSource = FALSE}, the \code{<srcref: \dots>}record will be printed.\code{.isOpen} is intended for internal use: it checks whether theconnection associated with a \code{srcfile} object is open.}\value{\code{srcfile} returns a \code{srcfile} object.\code{srcfilecopy} returns a \code{srcfilecopy} object.\code{getSrcLines} returns a character vector of source code lines.\code{srcref} returns a \code{srcref} object.}\author{Duncan Murdoch}\examples{\donttest{ # has timestampsrc <- srcfile(system.file("DESCRIPTION", package = "base"))summary(src)getSrcLines(src, 1, 4)ref <- srcref(src, c(1, 1, 2, 1000))refprint(ref, useSource = FALSE)}}\keyword{ debugging }\keyword{ utilities }