computeClassLinearization: Compute the Class Linearization

Description Usage Arguments Details Value Author(s) References Examples

View source: R/LPO.R

Description

There are a number of different methods for computing the class linearization. The methods described here are discussed in more detail in the vignette for this package. LPO and computeClassLinearization are aliases, the former being easier to type, the latter more descriptive.

Usage

1
2
computeClassLinearization(inClass, C3 = FALSE)
LPO(inClass, C3 = FALSE)

Arguments

inClass

The class for which a linearization of its is wanted.

C3

Whether or not to use the C3 method in computing the linearization.

Details

For many different computations, especially method dispatch, an algorithm for specifying a linear order of the class inheritance tree is needed. All object oriented programming languages support the computation of a linearization. Local precedence order (LPO) uses the order of the direct superclasses, given in the class definition, in computing the linearization, with earlier superclasses considered more specific than later ones. If there are no duplicate class labels in the hierarchy then this is then simply a bread-first search of the superclass definitions. But when one or more classes are inherited from different superclasses this definition becomes more complicated, and can in fact not be satisfied.

Value

A vector with the class linearization, the.

Author(s)

R. Gentleman

References

Monotonic Superclass Linearization for Dylan, K. Barrett and others, 1996, OOPSLA

Examples

1
2
3
4
5
6
setClass("object")
setClass("grid-layout", contains="object")
setClass("horizontal-grid", contains="grid-layout")
setClass("vertical-grid", contains="grid-layout")
setClass("hv-grid", contains=c("horizontal-grid", "vertical-grid"))
LPO("hv-grid")

RBioinf documentation built on Nov. 8, 2020, 11:11 p.m.